有可能买电脑的时候被坑,非常不愉快
解决方案: 找一个电脑高手,穴长跟你一起去.
1. 我什么都不用做
2. 只需要带上电脑高手带上钱
3. 完了就请他吃一个河粉,愉快的搞定了.
什么是电脑高手,是精通电脑,并且对电脑的行情非常熟悉.带上他你绝对不会被骗
面向过程和面向对象:==就是解决同一个问题不同的思路而已==
面向过程 | 面向对象 |
---|---|
C语言就是面向过程的语言 | OC语言就是一门面向对象的语言. |
一旦需求发生变化,就要代码推到重新来 | 需求变化的话,换个对象就能满足,后期维护修改方便 |
C语言有函数,函数之间是相互独立的,一个函数就是一个功能 | 一个人叫数组,他有与数组相关的很多功能. |
- 当你遇到需求的时候,千万要记住,不要自己一步一步的去实现,后期不好维护
- 框架.框架中就有很多人在听你的召唤.不同的框架当中预置了很多可以做很多不同事情的人.( 类 ).
- 首先先去找预置的框架当中有没有专门做这个事情的人,如果有直接喊过来用.
- 如果没有,就自己造一个可以实现这个需求的人.( 自己造的现在可以用这个人,以后也可以使用).
类就比如: 学生.电脑,食物,水果,苹果都是类,交通工具,车,汽车,奔驰汽车,奔驰汽车GLS.
对象就是: 小明早上吃的那颗苹果,曾凡怡的MBA,我家里那辆雷凌
==只要不具体到某一个就是统称,就是类==
> 1. 这类事物的名称
> 2. 这类事物具有的共同的特征,都拥有什么
> 3. 这类事物具有的共同的行为,具备什么样的功能
>
设计有个电脑类:
> 名称: 电脑
> 特征: CPU 内存 显卡 声卡...
> 行为: 开机 关机 放电影...
>
人类:
> 人:
> 特征:姓名 性别 年龄...
> 行为:走路 吃饭...
>
三两坦克发射了6枚炮弹大众了两架飞机
坦克类:
特征: 颜色,尺寸,型号,炮弹,...
行为: 发射
炮弹类:
特征: 威力,射程...
行为: 爆炸,飞行...
飞机类:
特征: 颜色 大小 翅膀...
行为: 飞行 攻击 爆炸...
小明在公交车上牵着一只叼着热狗的狗
人类:
特征: 姓名,年龄,狗
行为: 遛狗
公交车类:
特征: 大小,座位数...
行为: 载客 行使
热狗:
特征: 大小,颜色,气味...
行为: 散发气味
狗:
特征: 姓名 品种 热狗...
特征: 吃,叼热狗
a. 定义类的位置,写在main函数的外面.直接写在源文件下.
b. 在OC当中创建一个类,需要两个步骤.
-->类的声明
@interface 类名: NSObject
{
//这类事物具有的相同的特征.
//把这些特征定义为一个一个的变量.
数据类型1 变量名1;
数据类型2 变量名2;
......
}
//写上这类事物具有的共同的行为,用方法来表示.
//写上方法的声明
@end
-->类的实现
@implmentation 类名
方法的实现.
@end
//person类的声明
@interface Person : NSObject
{
NSString *_name;
int _age;
float _height;
float _weight;
}
@end
//person类的实现
@implementation Person
@end
c. 需要注意的是
类所具备的共同的特征,应该是以变量的形式声明在@interface的大括弧中.
a. 类必须要有声明和实现.必须同时有
b. 类名 这个类是用来描述哪一类事物的,直接使用这类事物的名称当做这个类的名称,类名的每一个单词的首字母大写
c. 写类的时候,类名不能和框架中的类的名字冲突,为了防止冲突我们给类加一个前缀.
d. 冒号后面的NSObject 不要管什么意思 照写.
e. 用来表示这类事物具有的共同的特征的变量应该定义在@interface的大括号中.这些变量有人叫: 特征,属性,成员变量,实例变量,字段,实例字段.
f. 属性的名称必须要以_开头.这是规范.
a. 拥有类所定义的所有的东东.
b. 这个时候,这个对象就可以直接使用了
语法格式:
类名 *对象名 = [类名 new];
HMPerson *xiaoMing = [HMPerson new];
这个时候,就根据HMPerson类模板创建了一个xiaoMing对象,类里面有什么对象里面就有什么.
5.xiaoMing对象可以直接使用,如何使用?如何访问对象当中的属性.
对象名->属性名 = 数据;
也可以取值
xiaoMing->_name = @"Jack";
//默认情况下对象当中的属性是不允许在外界访问的.直接这样坐会报错.
//如果就是要访问,就在定义类的地方,属性前面加一个修饰符 @public
(*对象名).属性名;
(*xiaoMing).name = @"小明";
1. 方法的声明
写在@interface的大括弧外面
2. 方法的实现
写在@implementation中
声明:
- (返回值类型)方法名称;
实现:将方法头拷贝到@implementation中,删除分号,在大括号中写实现
调用:
类中的方法不能直接调用,因为类不能直接实用,如果非要用的话就得创建类的对象.
HMPerson *p1 = [HMPerson new];
//对象当中有类所定义的所有的属性和方法.
[对象名 方法名];
声明
- (返回值类型)方法名:(参数类型)形参名称;
- (void)eat:(NSString *)foodName;
实现
- (void)eat:(NSString *)foodName
{
NSLog(@"主人你给我的%@真好吃",foodName);
}
调用带一个参数的方法
类中的方法不能直接调用,创建对象以后才能使用
[对象名 方法:实参];
声明
- (返回值类型)方法名:(形参类型)形参名1 :(形参类型)形参名2 :(形参类型)形参名3;
- (int)sum:(int)num1 :(int)num2;
实现
- (int)sum:(int)num1 :(int)num2
{
int sum = num1 + num2;
return = sum;
}
调用
[对象名 方法名:实参1 :实参2 :实参3];
int sum = [p1 sum:10 :20];
如果方法没有参数,那么方法名字就是方法的名字... eat
如果有参数就是 eat: :
如果带一个参数
xxxWith:
- (void)eatWith:(NSString*)foodName;
[p1 eatWith:@"红烧肉"];
看起来就像一条完整的语句!
==一个参数最标准的写法==
xxxWithxxx:
- (void)eatWithFood:(NSString)foodName;
[p1 eatWithFood:@"红烧土豆"];
带多个参数的!
xxxWith:(
- (int)sumWith:(int)num1 and:(int)num2;
int sum = [p1 sumWith:10 and:20];
==多个参数最规范的==
xxWith参数1: and参数2: and参数3:
- (void)sumWithNum1:(int)num1 andNUm2(int)num2;
[p1 sumWithNum1:10 andNum2:20];
==最重要的是在调用方法的时候可以看起来是一条完整的语句==