黑马程序员-08.OC的基本语法和面向对象思想

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

1.OC的初步认识

1)OC简介

1>C语言基础上,增加了一层最小得面向对象语法

2>完全兼容C语言

3>可以再OC里面加入C语言代码甚至是C++

4>可以使用OC开发Mac OS x平台的应用程序


2)OC 语法概述

1>关键字

关键字基本上都是以@开头的

@public、@private、@end 等

2>字符串以@开头

比如@"hello"是OC 的字符串,"hello"是C语言的字符串

3>其他语法

基本数据类型:char 、int、float、double、BOOL(YES\NO)

nil:相当于C语言的NULL ,也就是0

基本语句:循环语句(do while 、while、for)、条件语句(if、if-else、switch)

注释:// 和/*.......*/

屏幕输出:NSLog(@"hello");

3)OC开发过程


与C语言类似

 1> 编写OC源文件:.m、.c


 2> 编译:cc -c xxx.m xxx.c


 3> 链接:cc xxx.o xxx.o -framework Foundation

 (只有用到了Foundation框架才需要加上-framework Foundation)


 4> 运行:./a.out



.m(源文件)————编译————》 .o(目标文件)——链接———》a.out(可执行文件)


4)OC 中#import的作用和主头文件

 1> 跟#include一样,拷贝文件的内容

 2> 可以自动防止文件的内容被重复拷贝


 3> 主头文件:最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件

 4> Foundation框架的主头文件名称就是Foundation.h

 5> 只需要包含Foundation框架主头文件,就可以使用整个框架的东西

 

5)OC中类的设计

1)类的结构

1> 类名

* 类名的第一个字母必须是大写


* 不能有下划线


* 多个英文单词,用驼峰标识

2> 属性


3> 行为(功能)


2)类的设计举例说明

完整地写一个函数:函数的声明和定义(实现)


     完整地写一个类:类的声明和实现

类的声明

@interface Car : NSObject
{ )
     
    @public
    int wheels; // 轮胎个数
    int speed; // 时速(xxkm/h)
}

 - (void)run;

@end

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

- (void)run
{
    NSLog(@"车子跑起来了");
}

@end

类的声明注意点


声明对象的属性、行为

1> NSObject 目的是:让Car这个类具备创建对象的能力


 2>用来声明对象属性(实例变量\成员变量,默认会初始化为0)


 3>@public可以让外部的指针间接访问对象内部的成员变量


 4>方法(行为):方法名、参数、返回值(声明、实现)


 5>只要是OC对象的方法,必须以减号 - 开头


 6>OC方法中任何数据类型都必须用小括号()扩住


 7>OC方法中的小括号():括住数据类型


类的实现注意点


用来实现@inteface中声明的方法


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


3)怎样使用一个类

int main()
{
     )
    Car *p = [Car new];
    Car *p2 = [Car new];
    p2->wheels = 5;
    p2->speed = 300;
    [p2 run];
    
    p->wheels = 4;
    p->speed = 250;
    
     [p run];
    
    NSLog(@"车子有%d个轮子,时速位:%dkm/h", p->wheels, p2->speed);
    
    return 0;
}

类的使用的注意点

1>在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称]

2>利用类来创建对象


3>执行了Car这个类的new行为来创建新对象


4>定义了一个指针变量p,p将来指向的是Car类型的对象


5> [Car new]每次都会创建出一个新对象,并且会返回新对象本身(新对象的地址)


 6>给p所指向对象的wheels属性赋值


    p->wheels = 4;


7>给p所指向对象发送一条run消息


 [p run];


4)函数和对象的注意点

方法

 1.对象方法都是以减号 - 


 2.对象方法的声明必须写在@interface和@end之间

对象方法的实现必须写在@implementation和@end之间


 3.对象方法只能由对象来调用


 4.对象方法归类\对象所有


 


 函数

 1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有


 2.函数调用不依赖于对象


 3.函数内部不能直接通过成员变量名访问某个对象的成员变量


6)方法和实现的例子

计算器类

 方法:

 1> 返回 π 


 2> 计算某个整数的平方


 3> 计算两个整数的和


#import 
    
    
     
     

/*
计算器类
 方法:
 1> 返回 π 
 2> 计算某个整数的平方
 3> 计算两个整数的和
*/

@interface JiSuanQi : NSObject

// 方法名:pi
- (double)pi;

// OC方法中,一个参数对应一个冒号
// 方法名:pingFang:(冒号也是方法名的一部分)
- (int)pingFang:(int)num;

//- (int)sum:(int)num1 :(int)num2;
// 方法名:sumWithNum1:andNum2:
- (int)sumWithNum1:(int)num1 andNum2:(int)num2;


//- (int)sumWithNum1:(int)num1 andNum2:(int)num2 andNum3:(int)num3;
@end

@implementation JiSuanQi

- (double)pi
{
    return 3.14;
}

- (int)pingFang:(int)num
{
    return num * num;
}

//- (int)sum:(int)num1 :(int)num2
- (int)sumWithNum1:(int)num1 andNum2:(int)num2
{
    return num1 + num2;
}
@end

int main()
{
    JiSuanQi *jsq = [JiSuanQi new];
    
    
    int a = [jsq sumWithNum1:20 andNum2:5];
    //int a = [jsq sum:10 :5];
    
    //int a =  [jsq pingFang:10];
    
    //double a = [jsq pi];
    NSLog(@"%i", a);
    
    return 0;
}

    
    

7)匿名对象

要求能看懂不要求写


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

1>OC 是面向对象的,C是面向过程的。面向对象和面向过程只是解决问题的二种不同的思想

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

3>没有开发经验很难感受到二者的区别。这二种思想达到解决问题的目的是一样的,但是解决问题的思路不一样

4>现实中面向对象的一些例子 

想打电话——》找手机 (不用分析电话怎么才可以拨通)

汽车坏了——》找汽车维修工,不用分析修车的步骤

达到的境界是万物皆对象

5>面向对象的术语:Object Oriented ,简称 OO

6>OC中得面向对象

OC 中得类相当于图纸,用来描述一类的事物,就是说,要想穿件对象必须要有类

OC利用类来创建对象,对象石磊的具体存在

面向对象解决问题是想创建多个类,然后用类来创建多个对象




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





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值