OC语言笔记(一):OC程序解释

1、O和OC的差别

1:c的文件扩展名是.c,oc的文件扩展名是.m

2:包含头文件,c使用#include,oc使用#import,#include需要判断头文件是否已经被包含,#import不需要程序员判断是否已经被包含

3:打印方法,c使用printf,oc使用NSLog

换行加\n             自动换行

" " @" "

      4:打印字符串,C使用%s,     OC使用%@

5:C的数组,只能存一种类型,OC的数组,可以同时保存不同类型的对象

6:C的数组,一般保存基本数据类型,OC的数组,只能保存对象

2、面向对象和面向过程 思想

1:面向过程:关注的是算法,是功能的实现

2:面向对象:关注的是对象,和有没有一个功能的实现

3:不管面向过程还是面向对象,都是思想,C也能面向对象,OC也能面向过程

4:什么是对象,什么是类

姚明:头、四肢、躯干,高,吃喝玩乐,打篮球

梅西:头、四肢、躯干,矮,吃喝玩乐,踢足球

人类


StudentClass类

lily 对象

lucy 对象

polly 对象

语文分、数学分、英语分,算平均分


3、OC程序的解释

1:student.h文件解释

#import <Foundation/Foundation.h>//包含头文件(系统库的一个头文件)


//OC中的.h文件又被叫做声明文件,一般在这里会声明一个类的属性和方法

//一个.h文件一般要有

//@interface 类名:爸爸类


//@end组成

//本类Student就是类名,类名后要由一个:(冒号)引导这个类的爸爸类(父类)


//@interface@end之间是我们声明变量和方法的位置

@interface Student : NSObject

//成员变量,要写在一个{}中,每个变量命名时,应该用_开头

{//这里声明了三个成员变量,他们分别表示一个student对象的语文、数学、英语成绩

    //这些成员变量的生命周期,是和这个类的对象一样,等于是这个类的一个全局变量

    float _chineseScore;

    

    float _mathScore;

    

    float _englishScore;

}


//方法(函数)列表

/*

    OC的方法(函数)有以下部分组成

    一个方法的开头有一个符号:-+-表示这个方法应该由这个类的一个具体的对象来调用,所以-方法又称作对象方法。+表示这个方法由这个类的类名来调用,所以+方法又称作类方法。

    在这个符号后面是一个(),括号里是这个方法的返回值类型,一个方法只能有一个返回值类型,现在这个方法的返回值就是void无返回值。

    在返回值后面就是函数体,这里的函数体就是setChineseScore

    如果一个方法有参数那么在函数体后会有一个:冒号,这个冒号用来引导一个参数

    参数由参数类型和参数名组成,其中参数类型应该用()括起来,参数名在参数类型后面,这里的参数类型就是(float),参数名就是newChinese

    最后,要有一个;分号

*/

-(void)setChineseScore:(float)newChinese;//_chineseScore这个成员变量赋值


-(void)setMathScore:(float)newMath;


-(void)setEnglishScore:(float)newEnglish;


//如果一个方法有超过一个以上的参数时,每两个参数之间用 空格隔开,每一个参数之前必须要有一个有实际意义的方法(函数)体

-(void)getAverageScoreWithChinese:(float)chinese andMath:(float)math andEnglish:(float)english;

//上面这个方法的方法名就是getAverageScoreWithChineseandMathandEnglish


-(float)getChinese;//返回得到当前对象的语文成绩


-(float)getMath;


-(float)getEnglish;


-(float)returnAverageScore;

@end


2:student.m文件解释

#import "Student.h"

//OC.m文件又叫实现文件,在这里实现.h文件中的方法

@implementation Student


-(void)setChineseScore:(float)newChinese//给这类的_chineseScore这个成员变量赋值

{

    _chineseScore = newChinese;

}


3:开辟空间的同时进行初始化

//初始化一个类的对象的成员变量的方法 init方法,这个方法应该一个类的对象alloc出来之后立刻执行


-(id)initWithHeight:(int)height andAge:(int)age andEyePower:(float)eyePower;


-(id)initWithHeight:(int)height andAge:(int)age andEyePower:(float)eyePower

{

    //父类init

    self = [super init];//self就是自己,也就是调用这个init方法的对象

    

    if(self)//判断这个self有没有

    {

        _height = height;

        _age = age;

        _eyePower = eyePower;

    }

    

    return self;//把初始化好的这个对象返回

}


4:AppDelegate.h文件的解释

#import "AppDelegate.h"

//我要用Student这个类,就要包含这个类的.h文件,永远也不要包含一个类的.m文件

#import "Student.h"

#import "People.h"


@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.

    self.window.backgroundColor = [UIColor greenColor];

    [self.window makeKeyAndVisible];

    

    //使用OC的类和方法

    //1、实例化一个类的对象

    Student *lily = [Student alloc];

    //OC的方法调用的时候,要有一个[]括起来,[]里面有两个部分组成,前半部分是调用方法的或者对象”,后半部分是方法名及其参数

    //注意!,lily不是对象!而是一个指针,这个指针指向了一个对象,我们未来会使用这个指针,这个时候其实使用的是这个指针所指向的对象

    //等号右面的整个才是一个对象,一般使用[类名 alloc]的方法来创建一个对象,alloc会申请一块内存

    

    //2、为这个对象的成员变量们赋值

    [lily setChineseScore:80.0];

    [lily setMathScore:99.0];

    [lily setEnglishScore:10.0];

    //用一个对象的指针调用了一下-方法,给这个对象的一个成员变量赋值

    //3、把一个对象的成员变量的值取出来

    NSLog(@"%f",[lily getChinese]);

    NSLog(@"%f",[lily getMath]);

    NSLog(@"%f",[lily getEnglish]);

    

    //出现了一个lucy

    Student *lucy = [Student alloc];

    [lucy setChineseScore:12.0];

    [lucy setMathScore:50.0];

    [lucy setEnglishScore:40.0];

    

    NSLog(@"%f,%f,%f",[lucy getChinese],[lucy getMath],[lucy getEnglish]);

    

    NSLog(@"%f,%f,%f",[lily getChinese],[lily getMath],[lily getEnglish]);

    

    //计算两个人的平均分

    NSLog(@"%f",[lily returnAverageScore]);

    NSLog(@"%f",[lucy returnAverageScore]);

       

    //使用人类玩玩

    //1、实例化一个人

    People *my = [[People alloc] initWithHeight:200 andAge:18 andEyePower:1.5];

    NSLog(@"我是一个身高%d厘米,年龄%d岁,视力%0.1f的人",[my getHeight],[my getAge],[my getEyePower]);

    

    //2、使用类方法

    [People play];

    return YES;

}


4、快捷键

1:command + shift + 3   ——  截全屏

2:command + shift + 4   ——  自由截屏

3:command + shift + k   ——  清空缓存

4:command + /                 ——  注释

5:command + r                 ——  Xcode运行

6:command + b               ——  Xcode编译

7:command + 向上箭头  ——  光标移动到当前文件头部

8:command + 向下箭头  ——  光标移动到当前文件尾部

9:command + 向左箭头  ——  光标移动到当前行头部

10:command + 向右箭头  ——  光标移动到当前行尾部


练习:

1、新建工程;

2、建一个Computer类;

3、这个类又两个成员变量,一个是int_price,一个是float_weight

4、请实现这个类的成员变量的赋值、取值方法

5、实现一个方法,在方法中判断,如果这个电脑的价格超过5000,打印不买,如果这个电脑的重量超过2,打印破烂,如果这个电脑的价格低于5000并且重量小于2,打印买了

请分别实例化三个电脑

mac 4000 1

lenovo 1000 10

haier 8000 1.5



作业:

1、实现三行商品 的图片id、商品id、价格的打印

举例:第一个商品的图片id是001,商品id是1001,价格是3000

第二行。。。。。

第三行。。。。。

可以选择实例化出来三个商品对象,分别赋值,也可以用init方法初始化赋值。实例化的时候可以使用循环的方法来实现


2、实现一个汽车跑路的打印

2.1、做一个类,这个类是汽车类,有一个成员变量(速度),有一个方法计算这个汽车跑完一段距离的用时(这个方法有一个参数是长度)

2.2、再做一个类,这个类是道路,有一个成员变量(长度)

2.3、实例化出来一个汽车对象并赋值速度

2.4、实例化出来一个道路对象并赋值长度

2.5、计算这个汽车走完这段道路的用时,并打印


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值