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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.