黑马程序员————OC面向对象_类和对象(下)

时间:2023-02-18 17:51:01
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、面向对象和面向过程

1.区别

面向对象:关注的是解决问题需要哪些对象
面向过程:关注的是解决问题需要哪些步骤

2.常用术语
    /*
     
     面向过程:Procedure oriented
     面向对象:object oriented 简称oo
     面向对象编程:object oriented programming 简称 oop
  
     */

二、类和对象的关系

1.OC中的面向对象

1)类是对无数对象相同属性的概括
2)OC利用类来创建对象,对象是类的具体存在
3)面向对象解决问题应该是先考虑需要设计哪些类,在利用类创建多少个对象

2.需要设计哪些类,如何设计类
<pre name="code" class="objc">     /*
        类的设计只关心3样东西
     1)事物名称(类名):人(person)
     2)属性:身高(height)、年龄(age)
     3)行为(功能):跑(run)、打架(fight)
     */


 
3.一般名词都是类,拥有相同(或者类似)属性和行为的对象都可以抽象出有一个类
4.类的设计
1.类名
1)类名的第一个字母必须大写
2)不能有下划线
3)多个英文单词,用驼峰标识
三、定义类
完整的写一个函数:函数的声明和定义(实现)
完整的写一个类:类的声明和实现
1.类的声明
声明对象的属性和行为
@interface Person : NSObject
{
    // 可以让外部指针间接访问成员变量
    @public
    
    // 成员变量默认初始化为0(实例变量)
    int _height;
    int _age;
}
-(void)walk;

@end

2.类的实现
@implementation Person

// 方法的实现

@end
#import <Foundation/Foundation.h>
#import "Person.h"

int main() {

    // 利用类来创建对象
    [Person new];
    
    // 执行了Person这个类的new行为来创建新对象
    Person *p = [Person new];
    
    p->_age = 18;
    p->_height = 1.7;
    
    NSLog(@"%d岁,%f米的人在走路",p->_age,p->_height);
    
    return 0;
}


2015-04-23 13:06:27.791 面向对象[32923:2854768] 18岁,1.700000米的人在走路

3.对象的行为
1)方法(实现):方法名、参数、返回值(声明、实现)
2)要是oc对象的方法,必须以减号开头
3)oc方法中的小括号(),用来括住数据类型
@implementation Person

// 方法的实现(说清楚方法里面有什么代码)
- (void)walk
{
    NSLog(@"人在走路");
}

@end

// 给p所指向的对象发送一条walk消息
 [p walk];

2015-04-23 14:23:59.673 面向对象[32942:2860234] 人在走路

四、OC函数与方法的区别(有本质区别)
1.方法的实现只能写在implementation和end之间
@implementation Person

// 方法的实现(说清楚方法里面有什么代码)

@end


2.对象方法都是以-开头
3.对象方法的声明必须写在interface和end之间
@interface Person : NSObject
{
   // 定义成员变量
}

// 方法的声明
- (void)walk;

@end


4.对象方法只能当做对象来调用
5.对象方法归类/对象所有

6.函数能写在文件的任意位置(@interface和end之间除外)函数归文件所有
7.函数调用不依赖于对象
8.函数内部不能直接通过成员变量名来访问某个对象的成员变量


------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------