OC基础DAY02 - OC基础语法

什么是面向过程,什么事面向对象?
例子 完成需求
  1. 根据自己的需求和预算来初步的确定电脑的种类.
  2. 查找资料确定电脑的型号.
  3. 坐地铁去华强北.找到Apple专卖店.
  4. 砍价成功
  5. 愉快的回家

有可能买电脑的时候被坑,非常不愉快

解决方案: 找一个电脑高手,穴长跟你一起去.
1. 我什么都不用做
2. 只需要带上电脑高手带上钱
3. 完了就请他吃一个河粉,愉快的搞定了.

什么是电脑高手,是精通电脑,并且对电脑的行情非常熟悉.带上他你绝对不会被骗

解决同一个问题的两种思路
  1. 自己买电脑: 强调的是步骤,不能颠倒,自己是整个事情的主题,我是彻头彻尾的执行者,每件事情都是自己做.
  2. 电脑高手买电脑: 电脑高手是整个事情的主题,我是1个扬眉吐气的指挥者.
很明显下面这种方式是更好的.他专业.
  1. 解决这个问题的每一个步骤,都是我自己亲自去实现,这样的思路叫面向过程
  2. 自己不要亲自去做,而是找一个专门做这个事情的人来帮我做,像这样解决问题的思路,我们叫面向对象的解决思路

面向过程和面向对象:==就是解决同一个问题不同的思路而已==

> 我们做的大部分事都是面向对象的,因为对象是专业的,自己做起来麻烦,效果不好.

代码世界中面向对象
找一个专门做排序的来排序,一个能实现这个功能的代码来实现你的需求.
面向对象和面向过程的优缺点分析
面向过程面向对象
C语言就是面向过程的语言OC语言就是一门面向对象的语言.
一旦需求发生变化,就要代码推到重新来需求变化的话,换个对象就能满足,后期维护修改方便
C语言有函数,函数之间是相互独立的,一个函数就是一个功能一个人叫数组,他有与数组相关的很多功能.
如果使用面向对象来解决问题
  1. 当你遇到需求的时候,千万要记住,不要自己一步一步的去实现,后期不好维护
  2. 框架.框架中就有很多人在听你的召唤.不同的框架当中预置了很多可以做很多不同事情的人.( 类 ).
  3. 首先先去找预置的框架当中有没有专门做这个事情的人,如果有直接喊过来用.
  4. 如果没有,就自己造一个可以实现这个需求的人.( 自己造的现在可以用这个人,以后也可以使用).

什么是类和对象?

什么是对象?
买电脑的高手和装大象的冰箱就是对象.是现实生活当中的==具体存在==,特点是看得见摸得着拿过来就可以用.
什么是类?
千万不要跟那一类人一起玩.因为那一类人都有==相同的特征和行为==.物以类聚,人以群分.类是统称,是抽象的,不能直接使用.

类就比如: 学生.电脑,食物,水果,苹果都是类,交通工具,车,汽车,奔驰汽车,奔驰汽车GLS.

对象就是: 小明早上吃的那颗苹果,曾凡怡的MBA,我家里那辆雷凌

==只要不具体到某一个就是统称,就是类==

类和对象之间的联系
  1. 类是来干啥的:用来描述一群具有相同特征和行为的事物
  2. 对象是一类事物中的1个具体的存在.
  3. 类是模板,规定好了什么样的东西才叫这一类.找到一个对象就必须要有模板规定的,不能多不能少.
  4. 类是造月饼的模子,模子不能吃,类是不能用的
  5. 对象是根据模子造出来的月饼,上面的花纹不会多不会少.特征和行为不会多不会少.
  6. ==对象是满足类的特征的一个个体==.==类是一个特征和行为的模板==
  7. 汽车图纸和汽车,房屋平面图和房子.
如何设计一个类
  1. 是来干嘛的? : 具有相同特征和行为的事物
  2. 设计类的三要素

    > 1. 这类事物的名称
    > 2. 这类事物具有的共同的特征,都拥有什么
    > 3. 这类事物具有的共同的行为,具备什么样的功能
    >

    设计有个电脑类:

    > 名称: 电脑
    > 特征: CPU 内存 显卡 声卡...
    > 行为: 开机 关机 放电影...
    >

    人类:

    > 人:
    > 特征:姓名 性别 年龄...
    > 行为:走路 吃饭...
    >
  3. ==如何找类==? 名词提炼法:分析整个业务流程中出现了哪些名词,这些名词就是类, 然后根据类的三要素没来分析这些类有哪些特征和行为
三两坦克发射了6枚炮弹大众了两架飞机
坦克类:
特征: 颜色,尺寸,型号,炮弹,...
行为: 发射

炮弹类:
特征: 威力,射程...
行为: 爆炸,飞行...

飞机类:
特征: 颜色 大小 翅膀...
行为: 飞行 攻击 爆炸...

小明在公交车上牵着一只叼着热狗的狗
人类:
特征: 姓名,年龄,狗
行为: 遛狗

公交车类:
特征: 大小,座位数...
行为: 载客 行使

热狗:
特征: 大小,颜色,气味...
行为: 散发气味

狗:
特征: 姓名 品种 热狗...
特征: 吃,叼热狗

如何使用代码定义一个类

  1. 为什么要定义,因为要描述一群具有相同特征和行为的事物.
  2. 设计类的三要素.类名,特征,行为.
  3. 定义一个类的语法
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的大括弧中.
  1. 定义的时候必须要注意的
a. 类必须要有声明和实现.必须同时有
b. 类名 这个类是用来描述哪一类事物的,直接使用这类事物的名称当做这个类的名称,类名的每一个单词的首字母大写
c. 写类的时候,类名不能和框架中的类的名字冲突,为了防止冲突我们给类加一个前缀.
d. 冒号后面的NSObject 不要管什么意思 照写.
e. 用来表示这类事物具有的共同的特征的变量应该定义在@interface的大括号中.这些变量有人叫: 特征,属性,成员变量,实例变量,字段,实例字段.
f. 属性的名称必须要以_开头.这是规范.
如何根据类的模板创建一个对象
  1. 类是无法直接使用的,类是抽象的.
  2. 如果非要使用的话,就必须要找到这个类中的一个具体的存在,找到一个对象.
  3. 这个对象的特点
a. 拥有类所定义的所有的东东.
b. 这个时候,这个对象就可以直接使用了
  1. 如何创建1个类的对象
语法格式:
类名 *对象名 = [类名 new];
HMPerson *xiaoMing = [HMPerson new];
这个时候,就根据HMPerson类模板创建了一个xiaoMing对象,类里面有什么对象里面就有什么.

5.xiaoMing对象可以直接使用,如何使用?如何访问对象当中的属性.

对象名->属性名 = 数据;
也可以取值
xiaoMing->_name = @"Jack"; 
//默认情况下对象当中的属性是不允许在外界访问的.直接这样坐会报错.
//如果就是要访问,就在定义类的地方,属性前面加一个修饰符  @public
  1. 还可以这样访问,充分说明其实就是结构体
(*对象名).属性名;
(*xiaoMing).name = @"小明";
犯错列表
  1. 声明和实现的类名要一致 有(前缀)
  2. @interface下面有1个大括弧,属性写在大括弧中
  3. 属性一定要以下划线开头,访问的时候也一定要写下划线
  4. 对象名是个指针变量,所以要遵守变量的命名规范
  5. 默认情况,对象的属性是不允许外界访问,要加一个@public.
  6. 为对象的属性赋值,就是为对象的属性变量赋值,类型要一样.
  7. 类的外部不能直接操作属性(方法中可以),所以要创建对象后为对象的属性赋值.
  8. 创建类的对象时先写中括号再回去写就有提示了.

9.

方法的实现和调用
类还有行为,行为在类中用方法来表示,和函数特别像
  1. 类中创建方法来代表类的行为,分两个步骤
1. 方法的声明
写在@interface的大括弧外面

2. 方法的实现
写在@implementation
  1. 无参数的方法声明
声明:
- (返回值类型)方法名称;

实现:将方法头拷贝到@implementation中,删除分号,在大括号中写实现

调用:
类中的方法不能直接调用,因为类不能直接实用,如果非要用的话就得创建类的对象.
HMPerson *p1 = [HMPerson new];
//对象当中有类所定义的所有的属性和方法.
[对象名 方法名];
  1. 带一个参数方法的声明
声明
- (返回值类型)方法名:(参数类型)形参名称;
- (void)eat:(NSString *)foodName;
实现
- (void)eat:(NSString *)foodName
{
    NSLog(@"主人你给我的%@真好吃",foodName);
}
调用带一个参数的方法
类中的方法不能直接调用,创建对象以后才能使用
[对象名 方法:实参];
  1. 带多个参数的方法
声明
- (返回值类型)方法名:(形参类型)形参名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];

5. ==使用注意==

  1. 关于方法的名称
如果方法没有参数,那么方法名字就是方法的名字...  eat
如果有参数就是  eat: :
  1. 带参数的方法的命名规范!!
如果带一个参数
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];

==最重要的是在调用方法的时候可以看起来是一条完整的语句==

方法中访问属性
方法的实现中可以直接访问属性,谁调用方法就是用谁的属性.每个对象间独立毫无关系.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值