суббота, 1 августа 2015 г.

9. Делегаты

Видео урок находится здесь.
В этом уроке объясняется что такое делегат на примере класса пациентов и доктора (делегата) который их обслуживает.

Синтаксис делегата примерно такой:

@protocol TAPatientDelegate ;

@interface TAPatient : NSObject

Свойство - ссылка на делегат:
@property(weak,nonatomic) id  <TAPatientDelegate>  doctor;

-(BOOL) howAreYou;
-(void) takePill;
-(void) makeShot;
@end

@protocol TAPatientDelegate

методы делегата
-(void) patient:(TAPatient * )patient  hasQuestion:(NSString*) question;
-(void) patientFeelsBad: (TAPatient*) patient;

@end


пациент сам вызывает своего доктора (делегата).


Файлы проекта с уроком 9 Делегаты.

Домашнее задание  к уроку 9 Делегаты.



Ученик:

1. Создать пару пациентов и доктора по тому же принципу что и в видео. (Доктор делегат у пациентов)
2. У пациента пусть будет температура и другие симптомы, по которым доктор может принимать решение.
3. У пациента сделайте метод типа стало хуже и пусть когда станет хуже, то он идет к доктору
4. Всех пациентов объедините в массив и в цикле вызовите метод "стало хуже".
5. Доктор должен лечить каждого согласно симптомам.

Студент:

6. Создайте другой класс доктора, не наследника от первого доктора, например друг :)
7. этот друг должен лечить своих пациентов своими собственными методами и короче плохой он доктор
8. пусть кто-то ходит к врачу, а кто-то к нему
9. создайте пару разных объектов класса друг и пусть они лечат своих пациентов (чтобы понять что делегат это не класс, а объект)

Мастер:

10. Создайте список частей тела в делегате пациента (голова, живот, нога и тд) и когда пациент приходит к врачу, пусть говорит что болит.
11. Доктор должен принимать во внимание что болит
12. Создайте у доктора метод "рапорт". Пусть в конце дня, когда все уже нажаловались достаточно, доктор составит рапорт (выдаст имена) тех у кого болит голова, потом тех у кого болел живот и тд

Супермен

13. Создайте в классе пациента проперти - оценка доктору.
14. Когда доктор вам назначает лечение некоторые пациенты должны стать недовольны.
15. В конце дня после того как все лечение будет сделано и доктор напишет рапорт, надо пройтись по пациентам и всем недовольным поменять доктора.
16. Начать новый день и убедиться что Недовольные пациенты таки поменяли доктора.


Выполнил все задания (ученик, студент, мастер, супермен).
Файлы проекта с домашним заданием.

Вывод работы программы на экран получился такой:

 2015-08-06 09:44:42.539 DZ9Delegates[1757:41250] DAY 1
2015-08-06 09:44:42.540 DZ9Delegates[1757:41250] My name is Vasya. My health worsened, temperature: 39.5. I call the medic.
2015-08-06 09:44:42.540 DZ9Delegates[1757:41250] Patient Vasya temperature: 39.5 Ache: Head Ache. Treat headache
2015-08-06 09:44:42.540 DZ9Delegates[1757:41250] Vasya treat. Rating doctor: 2
2015-08-06 09:44:42.540 DZ9Delegates[1757:41250] My name is Kolya. My health worsened, temperature: 38.5. I call the medic.
2015-08-06 09:44:42.540 DZ9Delegates[1757:41250] Patient Kolya temperature: 38.5 Ache: Stomach stomachache. Treat Heartache
2015-08-06 09:44:42.540 DZ9Delegates[1757:41250] Kolya treat. Rating doctor: 1
2015-08-06 09:44:42.541 DZ9Delegates[1757:41250] My name is Dima. My health worsened, temperature: 40.5. I call the medic.
2015-08-06 09:44:42.541 DZ9Delegates[1757:41250] My friend Dima Ache: ToothAche Ache. Drink vodka shot
2015-08-06 09:44:42.541 DZ9Delegates[1757:41250] Dima treat. Rating doctor: 5
2015-08-06 09:44:42.541 DZ9Delegates[1757:41250] My name is Natasha. My health worsened, temperature: 37. I call the medic.
2015-08-06 09:44:42.625 DZ9Delegates[1757:41250] My friend Natasha Ache: Head heartache. Drink vodka shot
2015-08-06 09:44:42.626 DZ9Delegates[1757:41250] Natasha treat. Rating doctor: 4
2015-08-06 09:44:42.626 DZ9Delegates[1757:41250] My name is Denis. My health worsened, temperature: 36. I call the medic.
2015-08-06 09:44:42.626 DZ9Delegates[1757:41250] Patient Denis temperature: 36 Ache: Head Ache. Treat headache
2015-08-06 09:44:42.626 DZ9Delegates[1757:41250] Denis treat. Rating doctor: 4
2015-08-06 09:44:42.626 DZ9Delegates[1757:41250] List patient with Head Ache:   Vasya     Denis  
2015-08-06 09:44:42.626 DZ9Delegates[1757:41250] List patient with Stomach Ache:   Kolya  
2015-08-06 09:44:42.626 DZ9Delegates[1757:41250] Patient Vasya change Doctor
2015-08-06 09:44:42.627 DZ9Delegates[1757:41250] Patient Kolya change Doctor
2015-08-06 09:44:42.627 DZ9Delegates[1757:41250] DAY 2
2015-08-06 09:44:42.627 DZ9Delegates[1757:41250] My name is Vasya. My health worsened, temperature: 39.5. I call the medic.
2015-08-06 09:44:42.627 DZ9Delegates[1757:41250] My friend Vasya Ache: Head Ache. Drink vodka shot
2015-08-06 09:44:42.627 DZ9Delegates[1757:41250] Vasya treat. Rating doctor: 3
2015-08-06 09:44:42.627 DZ9Delegates[1757:41250] My name is Kolya. My health worsened, temperature: 38.5. I call the medic.
2015-08-06 09:44:42.627 DZ9Delegates[1757:41250] My friend Kolya Ache: Other Ache. Drink vodka shot
2015-08-06 09:44:42.628 DZ9Delegates[1757:41250] Kolya treat. Rating doctor: 4
2015-08-06 09:44:42.628 DZ9Delegates[1757:41250] My name is Dima. My health worsened, temperature: 40.5. I call the medic.
2015-08-06 09:44:42.628 DZ9Delegates[1757:41250] My friend Dima Ache: ToothAche Ache. Drink vodka shot
2015-08-06 09:44:42.629 DZ9Delegates[1757:41250] Dima treat. Rating doctor: 5
2015-08-06 09:44:42.629 DZ9Delegates[1757:41250] My name is Natasha. My health worsened, temperature: 37. I call the medic.
2015-08-06 09:44:42.629 DZ9Delegates[1757:41250] My friend Natasha Ache: Head heartache. Drink vodka shot
2015-08-06 09:44:42.629 DZ9Delegates[1757:41250] Natasha treat. Rating doctor: 1
2015-08-06 09:44:42.629 DZ9Delegates[1757:41250] My name is Denis. My health worsened, temperature: 36. I call the medic.
2015-08-06 09:44:42.629 DZ9Delegates[1757:41250] Patient Denis temperature: 36 Ache: Head Ache. Treat headache
2015-08-06 09:44:42.629 DZ9Delegates[1757:41250] Denis treat. Rating doctor: 1


Комментариев нет:

Отправить комментарий