知识点
1.初步认识 OC
2.xcode使用
3.面向对象编程思想,类和对象
4.类的定义和使用
5.类的实例化--对象
6.声明和实现相分离
===========================================
1、需要理解的(理论部分)
第一部分:OC和面向对象
1.1、OC语言的历史,特点、重要程度
【什么是OC】
objective - c 在C语言基础上开发, 面向对象的语言;
注意C语言和oc语言语法的区别;
IOS, iphone, ipad …
【进入OC阶段需要注意的事项】
1、 oc语言和c语言的区别;
2、多敲代码, 多耐心调试程序;
3、通过几个数据模型的项目熟悉oc语法,面向对象思想;
4、类提供大量的方法, 总结积累的习惯;
=====================================================================
2、如何在Xcode中创建OC工程
【常用快捷键】
【编译】 command + b
【运行】 command + r
【调试框和打印框显示和隐藏】 command + shift + y
【停止】 command + .
【注释】 command + /
【代码对齐】 control + i
其他快捷键:
花: command , ^ : control, ?? : shift
2.2 OC兼容C, 区别于C语言的地方
各种文件后缀名 .c和.m和.mm的区别
.c C源代码问价;
.m : C+OC文件;
.mm : C++ + OC文件;
.h 头文件;
#import作用
把文件包括进来;
@”hello”和C字符串区别
oc字符串: @“字符串”
C字符串: “字符串”
NSLog函数和printf函数区别
// NSLog printf
// 1、默认会换行 默认不会换行
// 2、预期打印出OC字符串 预期打印出c字符串
// 3、打印出工程名和时间 不会打印出工程名和时间
// 4、可以打印oc对象 %@ 不可打印oc对象
【NSLog各种数据类型的打印】
char 1 Byte
short 2 Byte
int 4 Byte
long 8 Byte
float 4 Byte
double 8 Byte
BOOL
NSInteger
NSUInteger
CGFloat
练习:输出各种数据类型的字节数
【恢复快捷键】 command + z
================================================================================
3、面向过程和面向对象:
C语言是面向过程的语言;
OC语言是面向对象的语言;
面向过程: 解决一个问题需要哪些过程(步骤);
面向对象: 解决一个问题需要哪些对象;
3.1、面向过程和面向对象
3.1.1 面向过程编程
【面向过程的语言】
1、省略主语; (主语是cpu)
2、面向过程 = 数据 + 算法;
3、数学映射;
【例子】
面向过程
冰箱装大象;
1、打开冰箱;
2、把大象放进冰箱;
3、关闭冰箱;
打开电脑玩游戏;
1、打开电脑
2、开始玩游戏;
3、关闭电脑;
【面向对象的语言】
1、主语是对象, 主要因素就是对象;每个对象可以接受不同信息, 这些共同合作完成一件事情;
2、面向对象 = 对象 + 消息;
3、生活映射;
应用程序都是用面向对象的语言写;
转变:
【例子】
面向对象
冰箱装大象 (两个对象: 冰箱, 大象)
1、冰箱打开门;
2、冰箱存储大象;
3、冰箱关闭门;
打开电脑玩游戏:
1、电脑打开;
2、人玩LOL
3、电脑关闭;
面向过程: 解决一个问题需要哪些过程(步骤);
面向对象: 解决一个问题需要哪些对象;
举例:
1、造房子; 1、打地基; 2、 砌砖; 3、装修;
1、需要会打地基的张三; 2、会砌砖的李四; 3、会装修得老王;
2、接IOS项目; 1、 写iOS代码; 2、会美工; 3、会销售;
1、会写iOS代码的全蛋; 2、会美工的小花; 3、会销售的铁柱;
3.2 类和对象的概念
类: 对对象的描述, 是对象的一个模板;
对象: 对象是实实在在存在,看得见摸得着, 在内存占有存储空间,同过类创建;
一.认识类和对象
对象是面向对象程序的核心。那么如何理解对象呢,类和对象是什么关系。
7.类和实例的区别
1)类是对象的模板,类是静态的,本身并不占用内存,只是对某类事物的一个说明
2)对象是某个模板的具体化
3.2.1 从生活逻辑上
类 对象
人 张三, 李四, 老王
电脑 我桌面这台电脑, 你桌面那台电脑;
狗 小白, 旺财
超级英雄 钢铁侠, 绿巨人, 蜘蛛侠;
3.2.2 从封装的角度
结构体 = 对数据封装;
函数 = 对代码的封装;
类 = 对数据和 函数的封装;
函数(方法)
面向对象三大特征: 1、封装; 2、 继承; 3、多态;
3.2.3 从编程语言的角度
类是一种自定义的类型 没有占用内存
对象是使用类创建的变量 用类型定义的变量会占用内存
3.2.4 官方定义
类:同一类具有相同特征的事物的抽象;
对象:某个类类型的变量
===========================================
4. 需要记住掌握的(实战部分)
【如何设计一个类】
人类:
成员变量: 名字, 年龄;
成员方法(函数):吃饭, 睡觉,打豆豆;
在OC大多数关键字都是以@开头;
设计一个类分两部分: 类的声明, 类的实现;
4.1、【类的声明】
//@interface 类名 : 父类
{
// 成员变量
}
// 成员方法的声明;
//@end
4.2、【类的实现】
//@implementation 类名
实现成员方法;
//@end
4.3、【成员变量】
描述拥有什么;
4.4 【成员方法】
描述能做什么;
4.5、【如何创建对象】
[类名 alloc];
4.6、【方法的调用】
[对象 方法名];
需求 : 访问成员变量? 通过方法来访问成员变量:
成员方法详细说明:
1,无参 ,无返回值的成员方法 - (void) 方法名;
2,带参数 - (void) 方法名:(参数类型)参数名;
3,带返回值得方法 - (NSUInteger)getAge;
4,带多个参数的方法 - (void)便签:(参数类型1)参数名1 标签2:(参数类型2)参数名2;
关于命名的那些事儿:
1、成员变量命名: 以_开头;
2、方法名和成员变量命名: 第一个单词小写,从第二单词开始首字母大写;
3、类名: 每一个单词首字母大写;
练习:【test1】
写一个学生类:
成员变量: name,学号,体重;
实现方法三个方法: 设置名字;设置学号;设置体重;
实现一个方法: 同时可以设置名字,学号,体重;
实现一个方法: 正在学习;
实现一个方法: 获取学号;
实现一个方法: 自我介绍;
注:什么是对象和什么是对象指针?
Student *s = [Student alloc];
对象指针: s 在栈区;
对象: [Student alloc]; 在堆区;
面向对象:
1、先找出对象;
2、列举出对象需要的成员变量和成员方法;
3、设计类;
4、通过类创建该对象;
5、让对象完成事情;
练习:
1、编写一个加法器,它能够接收两个整数int,然后输出两个整数的和;
一个对象 : 加法器;
需要成员变量: int ,int
方法: 加法;
以后项目中创建类肯定是每个类都在单独的文件 .h 和 .m中, 不会在main函数的上面创建类
.h 是类的声明;
.m 是类的实现;
使用该类(注意) 把类的.h头文件#import进来;
#import <系统提供.h>
#import“自定义的头文件.h”
1、如何设计一个类;
2、成员方法的语法;
3、如何创建一个对象;
4、调用对象的成员方法;
练习:
2、有一个长方形类,成员变量:长,宽,面积,周长;
方法有:设置长和宽,打印面积,打印周长;
3、设计狗类
属性: 名字,年龄,体重
方法:say说话,卖萌salesBud;
分别写三个方法,给三个成员变量赋值;
再写一个方法,同时给三个成员变量赋值;
再写一个方法,打印三个成员变量的值;
【作业】
1、已知一辆汽车速度是20Km/h,若令它行驶过一段1000km路程,需要多少小时?
2、创建一条公路,属性有长度和宽度,编写关于长度和宽度的设置和取值方法。
3、小明手里有两张牌,左手红桃A,右手是方片K,交换手里的两张牌,
问:交换之后,手里的牌各是什么?