Професионална програма
Loading...
+ Нов въпрос
kaloyannikov avatar kaloyannikov 531 Точки

[Java - OOP Advanced - Iterators & Comparators] 08. PetClinic - solutions

 

Това решение ок ли е ((КПК , ООП ) correctness) -> github 

Освен това може да се ползва темата за всеки който иска мнение или има въпрос по задачата , не му минава някой тест и т.н.

Според мен е важно да се гледа и чужд код , така или иначе се налага в 1 или друга ситуация . 

 

Тагове:
1
C# OOP Advanced 20/07/2016 20:17:41
ibosev avatar ibosev 54 Точки

Тъкмо търся решение на задачата за да се ориентирам и погледнах твоето. Лично аз не виждам да си използвал наученото в лекцията, а все си мислех, че задачите, които ни дават за домашно, това им е смисъла. Мислех, че трябва да се използват итератори. 

 

Едит: даже си го представям с 2 итератора: единия за добавяне, другия за махане на животно от клиниката. Винаги итераторите започват от определено място и като foreach-ваш, проверяваш дали на дадения индекс имаш null или не. В зависимост от резултата махаш или слагаш Pet. Хич не знам, обаче, как да се направи това.

0
23/07/2016 14:35:52
kaloyannikov avatar kaloyannikov 531 Точки

Ами да никъде не съм ползвал . След като я реших, исках да проверя авторското решение в което Clinic имплементира Iterable<Pet> обаче никъде не видях да обхожда тая клиника  с тоя итератор.

т.е не виждам смисъл от това че е бил имплемнтиран интерфейса , след като няма да се ползва.

0
23/07/2016 14:38:35
ibosev avatar ibosev 54 Точки

Колега, 

като се абстрахираш от това, че не съм използвал сложни дизайн патърни от сорта на фактори, командни диспетчъри и така нататък, можеш да видиш моето решение, което гърми на един тест, но не ми се търси точно сега къде е грешката. Поне можеш да погледнеш какво си представях аз като решение с 2 итератора.

https://drive.google.com/file/d/0B5GKgO0b2ElSRjQzUzFVZVpaYjQ/view?usp=sharing

1
24/07/2016 01:00:58
kaloyannikov avatar kaloyannikov 531 Точки

Ами идеята не е лоша , но можеш също така да направиш Клиниката да имплементира Iterable<Pet> .

Човек може да се заиграе , но в конкретната задача не видях да има много смисъл от това

 

0
StaVykoV avatar StaVykoV 169 Точки

Ет го и моето решение, макар че накрая от зор да си хвана 2-та теста, които не ми излизат, доста си развалих кода около хващането на Exception-и. Вече нямам нерви да го оправям, особено имайки предвид, че най - вероятно е някоя тъпа грешка или някъде принтирането...

Като цяло реших да ползвам 2 различни итератора и да ги менкам в зависимост от това дали добавям или махам елемент. Проблема който най - много ме затрудни мен беше, да използвам foeach и да мога да променям самите елементи ( тъй като не може във foreach-a), затова имплементирах интерфейс, който екстендва Iterable и с него си включих и метод getIndex() който ми връща индекса на елемента до който е стигнал итератора. Изглежда работи супер и съм много доволен и горд от това! :D

Иначе съм отворен (даже ги приветствам) към критики. Не съм се мъчил да имплементирам FactoryPattern за командите - мързеше ме за тази малка задачка да напиша още 9999999 класа :D

Ето го и кода ми!

1
miroslav_angelov avatar miroslav_angelov 5 Точки

На 3. StackIterator тримнете всички елементи при push-a, иначе ще ви минава смао първият тест, а останалите ще дават runtime error.

0