OC学习 第一节

1. 编程思想
C 面向过程 解决的是数学逻辑 按照步骤一步一步完成
比如开空调 1. 找到遥控器 2. 对准空调 3.按
我们 开 空调

开门 门是我们开的

OC Objective-C 面向对象思想 C++ JAVA C# ...
OOP Objective-oriented programming, 是一种思想,一种程序设计范例,将对象作为程序的基本单元,将程序和数据封装其中,提高软件的重用行,灵活性和可扩展性。
空调 对象
空调本身就具备了开这种状态,只是你给它发送了一个消息,它就进入了吹风的状态
门本来就具有开的这种状态,只是人给它发送了一个消息,它进入了它本来就有的这个状态,仅此而已

struct {float score, char name[256]}
->

object {float score, char name{256}, eat(), drink() …}
门 {
    属性,特性:
     颜色
     大小
     品牌
     厂商
   
   状态:
      开
      半开
      关
}
体现生活

类Class 是对相同特点的对象的抽象
Person {
    属性:耳目口鼻 … …
   具有什么功能:
           吃喝拉睡… 使用工具
}


Car {
    属性:颜色,车型,轮胎,生产厂商,价钱 …
   行为:跑 刹车 …
}

设计类体现这类东西的特性
Pig {
    刹车
}

野猪 {
    
}

面向对象的三大特征:
封装:根据事物的属性和行为把客观事务封装成抽象的类(把属性和行为封装在类中)
继承:从一般到特殊,子类可以使用父类的数据和方法,类与类之间的关系。
多态:提供了同一接口的名字,重过重载实现不同的功能

SmallTalk
OC和C的关系和不同
OC兼容C, C的代码在OC中可以不加配置的使用
OC是C的超集
OC在C的基础上根据面向对象的思想作了一个高层次的封装, OC是C的超集(这并不是说C没用,更不是说C没有OC强大,同理我们也不能说C没有JAVA强大,C能办大事,只是我们现在可能还不能用它办大事,C不能办大事吗?操作系统就是用C写的)

施乐公司
NS NextStep
NSString

2. XCode
XCode
XCode默认可以编译C/C++/OC/--Swift--
XCode新建Command Line Tool项目
工程名命名规范 fdckfs ltdr
Product Name 工程名
Organization Name 公司(组织)名
Company Identifier 公司标识
Type 库环境
搜索和函数等

常用快键:
//  快捷:Command + 0 隐藏和显示左侧显示视图
//  编译 Command + b(build)  Product -> build
//  运行 Command + r(run) Product -> run
//  搜索 Command + f  替换
//  打开右侧面板 command + option/alt + 0

.m
framework
工程目录,黄色的文件夹是虚目录

创建工程 new -> Project -> OX X -> command line tool
command + shift + n ...
NSLog %@ @autoreleasePool NSAutoreleasePool
编译command+b 运行command+r
debug区,控制台
OC函数,方法,消息
#include  #import
BOOL id

3. 类的声明和定义(在main方法中)
声明类
创建对象
对象和对象指针
函数/方法/消息

堆栈区别 堆是动态内存分配,运行时,栈是静态内存分配,编译时
                      堆                            栈
谁分配        程序员          系统
什么时候    运行时alloc      编译
在哪里        堆段                        栈段
何时释放    手动释放               函数调用结束

4. 存取器方法setter & getter
成员变量的命名规则
通过方法访问成员变量

5. 区分类和对象
类就是对象的抽象
对象就是类的实例

6. 方法相关(消息)
方法命名规则
成员方法
带参方法
多参方法

7. 初始化方法/构造函数
多参
init
initWithName:(NSString *)name;
初始化方法的功能是给成员变量一些合理的初始化值
一般要和alloc一起使用,不要调用诸如[xxx init]这样的代码
注:alloc创建对象时会把堆空间的成员变量清零,即成员变量默认是0

8. self
self代表当前对象,或者说是代表当前对象地址

9. +方法和-方法
+开头的方法即类方法,或者说+方法,静态方法
类方法属于类,和对象无关

在+方法中,self还是代表当前对象吗?
所以确切的说,self代表当前方法的调用者。
+方法可以调用-方法吗?
-方法可以调用+方法吗?
对象能调用+方法吗?

10. self和super
self上面已讲过,super是一个编译器符号,不是指针,用它表示调用父类的方法
if (self == [super init]) {}
非常小的机率会返回nil, nil表示空对象指针,类似于c的NULL, 我们可以向nil发送任何消息,都没事,可以把nil看成个黑洞,无论什么东西进去都没反应。所以相对来说是安全一些的. 对于成员变量,如果这个变量是对象,它默认是nil.
可以用self = [self init]吗?

作业:
已知一辆汽车速度是20km/h,若令它行驶过一段1000km路程,需要多少小时?
编写一个加法器,它能够接收两个整数,然后输出两个整数的和。

有一个长方形MyRect类,它的字段有
int length;
int width;
int area;
方法有
设置长和宽
打印面积
实现这个类的设计

好一个正立方体,边长a为10;求它的体积volume.
(要求创建立方体时,使用构造函数进行初始化,构造函数,要求有带参和不带参,两个版本,不带参,边长默认为1。)

创建一个Dog类,成员变量有,int age; int weight; int height;
分别写三个set函数,给三个成员变量赋值。
再写一个set函数,同时给三个成员变量赋值。
再写一个show函数,打印三个成员变量的值。

有一个圆类,半径为r。
创建半径为5的圆对象。
打印圆的面积和周长。

编写一个四则运算器,从终端输入两个数和一个字符,可以进行加减乘除四则运算

小明手里有两张牌,左手红桃A,右手方片K,现在让小明交换两只手里的牌。问交换之后,小明左右手的牌,各是什么?

实现ATM机
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值