黑马程序员---OC基础知识②

来源:互联网 发布:开票软件使用方法 编辑:程序博客网 时间:2024/06/10 07:56
1.面向对象与面向过程的区别:
面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象


2。现实生活中面向对象的例子
想打电话\发短信  找手机,不用分析电话要怎样才能拨通
去饭店吃饭  找服务员,不用分析怎么到厨房炒菜
汽车坏了  找汽车维修工,不用分析修车的步骤
境界:万物皆对象


3.OC中的面相对象
①OC中的类相当于图纸,用来描述一类事物。也就是说,要想创建对象,必须先有类
②OC利用类来创建对象,对象是类的具体存在
③因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象




4.设计一个类,并根据类来创建对象
一般来说,类的设计包括这几个部分
①类名
*类名的第一个字母必须是大写
*不能有下划线
*多个英文单词,用驼峰标识
②属性
③行为(功能)




5.下面是一个OC程序的例子,并详细说明句子的作用
#import <Foundation/Foundation.h>
// 类的声明
@interface Car : NSObject
{
    @public
    int wheels; // 多少个轮子
    int speed; // 时速
}
- (void)run; // 跑的行为
@end


1)成员变量
@interface的大括号{}中声明的变量:wheels、speed
@interface的大括号和函数的大括号是不一样的
默认会初始化为0


2)@public
@public可以让Car对象的wheels和speed属性被外界访问



3)NSObject
加上:NSObject的目的是让Car类具备创建对象的能力



// 类的实现
@implementation Car
- (void) run
{
    NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed);
}
@end
// 主函数
int main()
{
    // 创建车子对象
    Car *c = [Car new];
    c->wheels = 3;
    c->speed = 300;
    
    [c run];
    return 0;
}


1)main函数的代码分析、内存分析(对象在内存中有成员)
[Car new]每次都会创建出新的对象,并且返回对象的地址,那么就应该用一个指针变量保存对象的地址
Car *c = [Car new];
用一个指针变量c指向内存中的Car对象
设置车子对象的属性
跟用指向结构体的指针访问结构体属性一样,用->
c->wheels = 3;
c->speed = 300;
在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称]
[c run];




6.OC方法跟函数的区别
方法
 1.对象方法都是以减号-开始
 2.对象方法的声明必须写在@interface和@end之间
    对象方法的实现必须写在@implementation和@end之间
 3.对象方法只能由对象来调用,
 4.对象方法归类、对象所有 
 
 函数
 1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有
 2.函数调用不依赖于对象
 3.函数内部不能调用对象的成员变量


7.方法声明和实现(类方法和对象方法,带参数的方法)
当OC方法中带参数时,OC方法中一个参数对应一个冒号,函数名通常中通常语义中包含第一个参数名的描述,如
-(int)sumWithNum1:(int)num1;  // 带一个参数的方法
当有多个参数是从第二个参数起,以空格开始依次添加参数描述信息、冒号、参数类型、参数名,如
-(int)sumWithNum1:(int)num1 andNum2:(int)num2; // 官方建议这样写
每个方法中有几个参数,方法名中就有几个冒号,如
-(int)pingFang:(int)num;
方法名为:pingFang:
也就意味着所有的描述信息加冒号组成了方法名-(int)sumWithNum1:(int)num1 andNum2:(int)num2; 
方法名为:sumWithNum1: andNum2:
8.匿名对象
有时候利用OC创建一个对象后并没有用该对象类型的指针指向它,而是直接调用了方法或者做了其他事情,这样的对象就叫做匿名对象(没有指向它的变量名)。(编程不要使用,知道即可)

属性访问
[Car  new]->speed = 200;
方法调用
[ [Car  new]  run];

0 0
原创粉丝点击