1.面向过程与面向对象.
1). 完成需求1
将大象放进冰箱.
a. 把冰箱门打开.
b. 把大象放进去.
c. 把冰箱门关上.
这是面向过程的思路.
找1个冰箱,要求这个冰箱可以自己开门,自己把大象放进去,自己关门.
解决同1个问题的两种思路.
1). 解决这个问题的每1个步骤,都是我自己亲自去实现. 像这样的解决问题的思路,我们叫做面向过程的解决思路.
2). 自己不要去亲自做,而是找1个专门做这个事情的人来帮我做.像这样的解决问题的思路,我们叫做面向对象的解决思路.
面向过程与面向对象是解决同1个问题的不同的思路而已.
1). 面向过程的解决问题的思路.
解决这个问题的每1个步骤,都是我自己亲自去实现
2). 面向对象的解决问题的思路.
自己不要去亲自做,而是找1个专门做这个事情的人来帮我做.
找专门的人做专业的事情.
2. 代码世界中的面向过程与面向对象.
1). 要实现1个需求.实现这个需求的每1个步骤,都是由我自己写代码1步1步的来实现的. 这样的解决问题的思路,我们就叫做面向过程的解决问题的思路.
2). 实现1个需求,不是写代码1步1步的去实现, 而是找1个专门做这个事情的人来去做.像这样的解决问题的思路,就叫做面向对象的思路.
3. 面向对象与面向过程的优缺点分析.
1). 面向过程:
C语言就是1门面向过程的语言.
缺点: 一旦需求发生变化.就要重新来. 就要把代码推倒重新来.
C语言中有函数.函数与函数之间是相互独立的. 没有人的概念.
2). 面向对象:
OC语言就是1门面向对象的语言.
优势: 后期的维护和修改非常的方便 需求变化,大不了我重新换人.
人: 1个人可以有与之相关的很多的功能.
4. 如何使用面向对象来解决问题.
1). 当遇到1个需求的时候 ,不要1步1步去实现.
2). 框架.不同的框架中,预置了很多可以做不同事情的人. 类.
3). 首选,先去找预置的框架中是否有专门做这个事情的人.如果有,直接用.
4). 如果没有.就自己造1个可以实现这个需求的人.自己造的话.不仅现在可以用这个人,并且以后也可以使用.
5. 什么是对象?
对象是现实生活中的具体存在.
特点:看得见,摸的着,拿过来就可以用
具体到某1个才是对象.
什么是类?
是因为组成类事物的每1个个体,都具有相同的特征和行为.
类是对1群具有相同特征和行为的事物的1个统称.
特点:抽象的.不能直接使用.
学生
电脑:
食物:凡是可以吃的东西统称为食物.
水果:
苹果:
6. 类与对象之间的关系.
1). 类是用来描述1群具有相同特征和行为的事物的.
2). 对象是1类事物中的1个具体存在.
3). 类是模板,对象是根据这个类模板创建出来的.类模板中有什么,对象中就有什么.不会多也不会少.
4). 类是制造月饼的模子,模子不能吃,所以类是不能用的.对象是根据这个模子制造出来的月饼.模子上有什么,月饼上就有什么,不会多也不会少.月饼可以吃,所以对象可以用. 所以,类模板中有什么,根据这个类模板创建出来的对象中就有什么不会多也不会少.
7. 如何设计1个类
1). 来是用来描述1群具有相同特征和行为的事物的.
2). 设计类的三要素.
这类事物的名称 这类事物具有的共同的特征.这类事物具有的共同的行为.
电脑类:
电脑
特征: CPU 内存 显卡 声卡.....
行为: 开机 关机 放电影.
人类:
人:
特征: 姓名 性别 年龄......
行为: 走路 吃饭 .....
3). 如何找类?
名词提炼法: 就是分析整个业务流程中出现了哪些名词,这些名词就是类.
然后根据类的三要素.来分析这些类有哪些特征和行为.
8. 如何使用代码来定义1个类.
1). 为什么要定义1个类?
因为我们要使用类来描述1群具有相同特征和行为的事物的.
2). 设计类的三要素.
类名 特征 行为.
3). 定义1个类的语法
a. 定义类的位置.
应该写在main函数的外面,直接写在源文件下.
b. 在OC中创建1个类,需要两个步骤.
-> 类的声明
@interface 类名 : NSObject
{
这类事物具有的相同的特征.
把这些特征定义为1个1个的变量.
数据类型1 变量名1;
数据类型2 变量名2;
.......
}
写上这类事物具有的共同的行为,用方法表示.
方法的声明.
@end
-> 类的实现.
@implmentation 类名
方法的实现.
@end
c. 需要注意的是.
类所具备的共同的特征,应该是以变量的形式声明在@interface的大括弧之中.
4). 定义类的时候,必须要注意的几点.
a. 类必须要有声明和实现. 声明和实现必须同时有.
b. 类名 这个类是来描述那1类事物的,直接使用这类事物的名称当做这个类的名称.类名的每1个单词的首字母大写.
c. 在写类的时候.类名不能和框架中的类的名字冲突.为了防止命名冲突,我们建议为我们的类加1个前缀.
d. 冒号后面的NSObject 不要去管什么意思. 照写就可以了.
e. 用来表示这类事物具有的共同的特征的变量,应该定义在@interface的大括弧中.这些变量: 特征、属性、成员变量、实例变量、字段、实例字段.
f. 属性名称必须要以_开头.
9. 如何根据类的模板创建1个对象.
1). 类是无法直接使用的.因为类是抽象的.如果非要使用的话.就必须要找到这个类中的1个具体存在.也就是说要找到这个类中的1个对象.
2). 找到类中的1个对象.
这个对象的特点:
a. 这个对象中拥有这个类所定义的所有的东东.
b. 这个时候,这个对象就可以直接使用了.
3). 如何创建1个类的对象.
语法格式:
类名 *对象名 = [类名 new];
HMPerson *xiaoMing = [HMPerson new];
这个时候,就根据HMPerson类模板创建了1个xiaoMing对象.
这个xiaoMing对象中,有HMPerson类中定有的所有的东东.
类里面有什么,对象中就有什么.
并且这个xiaoMing对象可以直接使用.
10. 如何使用对象.
1). 对象是根据类的模板创建出来的.类中有什么,对象中就有什么.并且对象可以直接使用.
2). 如何访问对象中的属性.
语法格式:
对象名->属性名 = 数据;
还可以使用*来访问.
(*对象名).属性名;
充分证明对象其实是1个结构体.
3). 默认情况下,对象中的属性是不允许在外界访问的.如果想要访问,那么就在定义类的地方 属性前面加1个修饰符 @public
11. 犯错列表
1). 声明和实现 的 类名要一致.
2). @interface下面有1个大括弧,这个大括弧中才是写属性的.
3). 属性名一定要以下划线开头.
4). 属性是指针的时候,*要么和类型写在一起,要么和属性名写在一起,要么写中间,
5). 对象名其实是个指针变量,所以,对象的命名要遵守变量的命名规范.
6). 访问对象的属性的时候,虽然可以使用*去访问,但是你最好不要这么做,因为所有人都不这么做.都是使用->来访问的.
7). 通过对象名来访问对象的属性的时候,对象名->属性名;属性名是带了下划线的.
8). 默认情况下,对象的属性是不允许被外界访问的,应该加1个@public
9). 为对象的属性赋值,其实就是为对象的属性变量赋值,类型要和属性的类型一致.
10). 在类的外部不能直接操作属性,必须要创建对象,操作对象的属性.
11). 无论是为属性赋值,还是取属性的值, 都是操作的对象的属性,都要通过对象名来操作.