4. Курс
CS 193P Факультет бизнес-
информатики
Отделение программной
инженерии
ЗАО ПРОГНОЗ
5. Литература
Getting Help
• Документация
• The assignment walks you
through it
• developer.apple.comlook
• Key spots to
API & Conceptual Docs in Xcode
•
■
stackoverflow.com files
■ Class header
•
■ Docs, sample code, tech notes
Джонатан Здзиарски «iPhone
on Apple Developer Connection
(ADC) site
SDK. Разработка приложений»
http://developer.apple.com
■
http://www.ozon.ru/context/
Dev site uses Google search
■
detail/id/4760826/
• http://school.squeek.ru
Thursday, January 7, 2010 5
6. Что в результате?
Objective-C
Xcode 4
iOS SDK
Foundation UIKit
командный проект
15. Классы в Obj-C
• Классы тоже объекты
• Класс - шаблон для объекта
• Класс имеет поля и методы (и свойства)
• Поля скрыты извне - нужны get/set
16. Наследование в Obj-C
Inheritance
Superclass
NSObject
UIControl
Subclass
UIButton UITextField
• Hierarchical relation between classes
• Subclass “inherit” behavior and data from superclass
• Subclasses can use, augment or replace superclass methods
Thursday, January 7, 2010 10
17. Методы класса и
объекта
Class and Instance Methods
• Class and Instance Methods
Методы объекта (динамические)
• Instances respond to instance methods
- (id)init;
- (float)height;
• Instances respond to instance methods
- (void)walk;
- (id)init;
- (float)height;
•-Classes respond to class methods
(void)walk;
• Методы класса (статические)
+ (id)alloc;
+ (id)person;
• Classes respond to class methods
+ (Person *)sharedPerson;
+ (id)alloc;
+ (id)person;
+ (Person *)sharedPerson;
19. Пример
Person *voter;
int theAge = [voter age];
[voter setAge:21];
if ([voter canLegallyVote]) {
// что-то сделать здесь
}
[voter registerForState:@"CA" party:@"Independant"];
NSString *name = [[voter spouse] name];
20. стадия дизайна класса
• Создание описания класса - Person
• Определение супер-класса - NSObject
• Какие свойства нужны?
имя, возраст, может ли голосовать
• Какие действия может выполнять?
голосовать
21. Defining a class
A public header and a private implementation
Класс = +
Header File Implementation File
22. заголовок header and a
A public
Definin
#import <Foundation/Foundation.h>
@interface Person : NSObject {
// переменные объекта
NSString *name;
int age;
}
// объявление методов
- (NSString *)name; Header File
- (void)setName:(NSString *)value;
- (int)age;
- (void)setAge:(int)age;
- (BOOL)canLegallyVote;
- (void)castBallot;
@end
23. реализация
Defining a class
A public header and a private implementa
#import "Person.h"
@implementation Person
- (int)age {
return age;
}
- (void)setAge:(int)value {Header File Implementation File
age = value;
}
//... и остальные методы
@end
24. вызов собственных
методов
#import "Person.h"
@implementation Person
- (BOOL)canLegallyVote {
return ([self age] >= 18);
}
- (void)castBallot {
if ([self canLegallyVote]) {
// голосование
}
else { NSLog (@“I’m not allowed to vote!”);
}
@end
40. создание собственного init
#import "Person.h"
@implementation Person
- (id)init {
// сначала инициализируется супер-класс
if (self = [super init])
{
age = 0;
name = @“Bob”;
// другая инициализация...
}
return self;
}
@end