------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1. 面向对象和面向过程。
1>oc是面向对象的语言,所谓面向对象就是解决问题需要哪些对象。
2>c是面向过程的语言,解决问题时关注的是过程和步骤。
2. 类和对象。
1>类:相当于设计图。
1>类名:类名的第一个字母必须是大写
不能用下划线
多个英文单词时必须用驼峰标识
2>对象:是依据类设计出来具体存在的。
因此面向对象解决问题是先考虑需要设计哪些类,再根据这些类创建出所需要的对象。
3. 需要设计哪些类,如何创建类。
1>类的设计只需三种东西。即类名、属性、和行为(功能)
例如:
1>.植物大战僵尸
类名 Zoombie
属性 life speed gongjili
行为 walk bite die
2>.雷电中的飞机
类名 : Plane
属性 : life gongjili speed boomCount
行为 : fly boomb shoot die
4. 类的声明和实现:
类的声明:声明对象属性、行为。
@interface 类名
{
成员变量名
...............
}
@end
类的实现:
@implemention 类名
{
对象方法的实现
}
@end
例子:
创建一个car类属性为轮子,速度,行为跑。
#import
//1.类的声明
//声明对象的属性、行为
//:NSObject 目的是让car这个类具备创建对象的能力
@interface Car: NSObject
{
@public//可以让外部的指针间接访问对象内部的成员变量
int wheels;
int speed;
}
//方法(行为):方法名、参数、返回值(声明、实现);
//只要是oc对象的方法 必须以减号“—"开头
//oc方法中任何数据类型都必须用()括住
-(void)run;
@end
//类的实现
@imlemention Car
-(void)run
{
NSLog(@"车子跑起来了");
}
@end
int main()
{
//在oc中向执行一些行为就写上一个中括号[执行者 行为名称]
//利用类名创建对象
//执行了类的new行为创建了对象
//定义了一个指针p将指针p指向car类型对象
//[类名 new]每次都会创建一个新对象并且反悔新对象本身
car *p = [car new];
p -> wheels=4;
p -> speed = 250;
//给p只想的对象发送了一个run命令
[p run]
car *p2 = [car new];
p2 -> wheels = 5;
p2 -> speed = 300;
[p2 run]
return 0;
}
类的声明和实现常见的错误:
1>只有类的声明,没有类的实现
2> 漏了@end
3>@intface和@implementation嵌套 两个类的声明嵌套
4>成员变量没有写在括号里面
5>方法的生命卸载了大括号里面
5. OC中方法和函数的区别:
对象方法:
1>对象方法是以-好开头的的
2>对象方法必须声明在@interface @end中
3>对象方法必须有对象来调用
4>对象方法归类对象所有
函数:
1>函数能写在文件任意位置(@interface @end 只见除外)
2>函数调用不依赖于对象
3>函数内部不能通过成员变量名访问某个成员变量
例子:
#import
typedef enum{
SexWoman,
SexMan,
}Sex;
typetydef struct{
int year;
int month;
int day;
}Date;
typedef enum{
ColorBlue;
ColorRed;
ColorGreen;
}Color;
@interface Student : NSObject
{
Sex sex;
Date birthday;
Color favCOlor;
double wheight;
Dog *dog;
}
-(void) eat;
-(void) run;
-(void) liudog;
-(void) weidog;
@end
@implementation Student
-(void) eat
{
wheight = wheight - 1;
NSLog{@"当前体重为%f", wheight};
}
-(void) run
{
wheight = wheight - 1;
NSLog{@"当前体重是%f",wheight}
}
-(void) liudog
{
[dog run]
}
-(void) weidog
@end
@interface Dog : NSObject
{
@public
double wheight;
}
-(void) eat;
-(void) run;
@end
@imlementation Dog
-(void) eat
{
wheight = wheight - 1;
NSLog{@"狗当前的体重是%f",wheight}
}
-(void) run
{
wheight = wheight - 1;
NSLog{@"狗当前的体重是%f",wheight}
}
}
int main()
{
Student *s = [ Student new];
s-> wheigt = 50;
Date d ={2011,11,11};
s -> birthday = d;
s ->favColor = ColorGreen;
[s run];
[s eat];
Dog *p = [Dog new];
p ->wheight = 20;
[p eat];
[p run];
s ->Dog = p;
[s liugou];
[s weigou];
return 0;
}