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). 无论是为属性赋值,还是取属性的值, 都是操作的对象的属性,都要通过对象名来操作.

OC之类与对象的更多相关文章

  1. iOS学习10之OC类和对象

    本次是OC的第一节课,主要是学习和理解类与对象 1.面向对象 1> OOP(Object Oriented Programming)面向对象编程. 面向对象以事物为中心,完成某件事情都需要哪些事 ...

  2. oc学习之对象在内存的位置

    对象在内存中的存储 1. 内存中的五大区域. 栈: 存储局部变量. 堆: 允许程序员手动在堆区申请指定的连续的字节数的空间来使用. BSS段: 存储未初始化的全局变量.静态变量. 数据段(常量区):  ...

  3. OC学习16——对象归档

    转载自  OC学习篇之---归档和解挡 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的.当然在操作的这些对象都 ...

  4. Objective-C:OC内部可变对象和不可变对象的深(复制)拷贝问题思考:

    OC内部:可变对象和不可变对象的深(复制)拷贝问题思考:   不可变对象:  例如NSString对象,因为NSString对象是常量字符串,所以,不可以更改其内容,但是可以修改指向该字符串的指针指向 ...

  5. OC中用NSSortDescriptor对象进行数组排序

    //创建一个数组 NSArray *array = @[@"one", @"two", @"three", @"four" ...

  6. OC 继承子类对象调用方法机制 子类对象访问父类中的实例变量

    在继承中,子类对象如何调用到正确方法的机制 每一个Objective - C对象都有一个隐藏的指针指向类的代码,当向一个对象发送消息的时候,当前的对象会首先在当前类里去查找相应的方法,如果找到的话,直 ...

  7. OC 构造方法(对象初始化)

    一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法来分配存储空间(返 ...

  8. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  9. OC基础--OC中的类方法和对象方法

    PS:个人感觉跟C#的静态方法和非静态方法有点类似,仅仅是有点类似.明杰老师说过不要总跟之前学过的语言做比较,但是个人觉得,比较一下可以加深印象吧.重点是自己真的能够区分开! 一.OC中的对象方法 1 ...

随机推荐

  1. Windows 8.1 store app 开发笔记

    原文:Windows 8.1 store app 开发笔记 零.简介 一切都要从博彦之星比赛说起.今年比赛的主题是使用Bing API(主要提到的有Bing Map API.Bing Translat ...

  2. System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(string, string)已过时的解决办法

    FormsAuthentication.HashPasswordForStoringInConfigFile 方法是一个在.NET 4.5中已经废弃不用的API,参见: https://msdn.mi ...

  3. Android学习小Demo(21)ListView的联动选择

    在日常的App开发中,尤其是在开发生活服务的应用上,非常多时候,我们会须要联动地展现省市区的数据等,需求大概例如以下: 1)展现全部省份 2)当点击某省份的时候,在二级菜单上展现此省份以下所属的城市列 ...

  4. UUShutdown关机工具 - 给 Windows8.1Metro 开始屏幕添加 关机重启按钮

    UUShutdown,给开始屏幕(开始菜单)添加重启关机等按钮 如图: 安装完成之后找到开始菜单程序文件夹中的快捷方式,附加到开始屏幕即可. 2.0加入主程序界面,支持换肤和定时: 看见的需要那就拿去 ...

  5. POJ 2560 Freckles Prime问题解决算法

    这个问题正在寻求最小生成树. 给定节点的坐标,那么我们需要根据各个点之间的这些坐标来计算距离. 除了这是标准的Prime算法的,能源利用Prime基本上,你可以使用Kruskal. 经典的算法必须填写 ...

  6. 18 个最新实用的 jQuery 插件

    1. Simple Effects for Drop-Down Lists 一个jQuery插件用于将普通的select控件转成一个带有一些简单扩展效果的下拉列表. 2. X-editable 这个插 ...

  7. js实现是倒计时功能

    工作中经常用到倒计时的功能,最近在整理之前做的项目的时候,发现自己写过一个倒计时的功能的效果,这里和大家分享下!实现这个功能是用原生js写的,不需要加载额外的库文件!功能比较简单,但是可以在此基础上扩 ...

  8. 基于Web的IIS管理工具

    Servant:基于Web的IIS管理工具   Servant for IIS是个管理IIS的简单.自动化的Web管理工具.安装Servant的过程很简单,只要双击批处理文件Install Serva ...

  9. 《剑指Offer》面试题-从头到尾打印链表

    题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例.每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类推 ...

  10. java web项目基础

      listener,filter,servlet的初始化顺序 web.xml中可以配置如下信息: context-param,listener,filter,servlet. 他们的加载顺序和在we ...