iOS开发之oc(回顾笔记)--类与对象(1)

理论是枯燥的,所以有点长。哈哈哈~

要学习一门语言,我们首先得了解它,那么

【什么是OC】

objectiv-c  简称 OC,是一门基于C语言为基础编写而成的面向对象的语言。完全兼容C语言;可以在OC代码中混入C语言代码,甚至是C++代码;

可以使用OC开发Mac OS X平台和iOS平台的应用程序。

(一)首先,先了解一下面向过程和面向对象:

【面向过程】

1、面向过程的语言所有语句都是祈使句 

2、面向过程的语言是数学逻辑的映射

3、面向过程语言的程序 = 数据 + 算法

C语言就是一门面向过程的语言,解决问题关注的是过程。

【面向对象】

1、对象作为接受消息的单位,不同的对象负责接收和处理数据的某个方面,不同对象协同完成功能

2、是生活逻辑的映射

3、程序 =  对象 + 消息

而oc就是面向对象的语言,解决问题关注的是对象。

至于【哪种方法更好】---具体情况具体分析

提示:

>面向对象语言开发的步骤

1.根据需求设计类

2.利用类创建需要的对象

一个OC程序编写-->运行

>

/*方法一:

1.编写OC程序:.m源文件(在终端touch xxx.m  创建OC程序)

2.编译.m文件为.o目标文件:cc -c xxxx.m

3.链接.o文件为a.out可执行文件:cc xxxx.o -framework Foundation

4.执行a.out文件:./a.out

一步到位:

cc xxxx.m -framework Foundation

方法二:当然你也可以用Xcode(嘿嘿,就不那么苦逼了)

*/

(二)类与对象的初识

1.认识

类:具有对象的属性,是对对象的描述。

对象:类的实例化,看得见摸得着

武功的最高境界叫做“万物皆对象”。

2.

【从封装的角度】

【结构体】是对数据结构的封装

【函数】对处理数据的算法的封装

【类】    是对要处理的数据结构进行封装      同时对处理数据的算法做了封装                            

 类 = 结构体 + 函数

从编程语言的角度分析

【类】它是一个自定义的类型             没有占用内存

【对象】某个类创建出来的变量         用类型定义的变量会占用内存

3.解决OC问题的步骤(核心思想)

第一:找到题目中所需要的对象

第二:列出对象的成员变量和成员方法

第三:根据找到的对象,创建相应的类

第四:用类创建出来对象

第五:给对象发消息,让对象完成相应的功能

4.设计一个类的3个步骤:

1).类名

2).属性

3).行为(动作\功能)

(三)类和对象---实战

类   =   属性数据封装(成员变量)    +  方法(函数)封装

1、【头文件的引用】

#import <Foundation/Foundation.h>

#import "Cube.h"

<>表示导入系统的头文件

“”表示导入自定义的头文件

提示:#import作用跟#include一致,而且可以防止头文件的内容被包含多次

// 包含Foundation框架里面的NSObjCRuntime.h

// 应该包含Foundation框架的主头文件Foundation.h

2、类声明和实现

2.1、【类的声明】

代码示例

@interface       Dog   :   NSObject
{
//属性数据封装在{ }以内     // 成员变量类型  成员变量名称;

    int   _age;    //属性成员名加_(成员变量)
    float _weight;
}

//封装方法

//最常用的方法 setter(设置)/getter(获取)

//c函数语法:返回值类型  函数名(参数列表)
//OC方法语法:
// 方法类型
//-  对象的方法
//+  类的方法

//方法类型 (返回值类型)部分方法名:(参数类型)参数名称1 部分变量名:(参数类型)参数名称2;  // 多个参数

//setter / getter 方法主要是为了保护对象的数据安全

//成员变量的setter方法

-(void)setAge:(int)newage;   //void setAge(int age)

-(void)setWeight:(float)w;

//成员变量的getter方法

-(int)age;        //  对 -(int)getAge进行了优化,方法名与成员变量相对应

-(float)weight;

//功能方法
-(void)run;
-(void)bark;

@end

代码说明

a.

【首行代码】

@interface 类名 : 父类名

1)用关键字@interface 声明一个类

2)interface 后面跟的是类名

3)冒号表示继承关系,后面跟的是父类

比如说你创建可Dog类

(: NSObject --让Dog这个类具备创建对象的能力)

b.

【成员变量】

成员变量(实例变量)声明在大括号之间,成员变量是在描述对象有什么.

c.

【成员方法】

1)无参 ,无返回值的成员方法

-(void)方法名;

2)带参数

-(void)方法名:(参数类型)形参;

3)带多个参数的方法

-(void)标签1:(参数1的类型)形参  and标签2:(参数2的类型)形参;

4)带返回值得方法

-(返回值类型)方法名;

【成员函数是描述对象可以做什么】

3、【类的实现】---也可以说是方法的实现

 @implementation Dog
//实现类方法关键字  类名
//  在这里进行方法的实现 (也就是写具体代码)

// set方法的实现
 -(void)setAge:(int)newage
{
     _age = newage;
 }

 // get方法的实现
 -(int)age
{
    return _age;
 }

 //功能方法
 -(void)run
 {
     NSLog(@"run.....");
 }

 @end

4、【对象的创建和使用】

1)创建对象

类名 *指针变量名 =[类名  alloc/new];

利用类的alloc/new方法创建一个新的对象(会在堆空间声明一块空间),并且把对象的地址返回左边的指针变量

 (所以需要用该类类型的指针变量去接收)。

Dog * dog = [Dog alloc];

2)使用对象

1> 访问成员变量

指针变量名->成员变量名 = 具体数值;

c->speed = 100;(前提是在成员变量前写@public)

2> 让对象执行方法

[指针变量名 方法名];

[c run];

[指针变量名 部分方法名:实参1  部分方法名:实参2];

[c sumOfNum1:100 andNum2:200];

// 消息机制:给指针变量所指向的对象发送一条消息(消息名称就是方法名),让那个对象执行相应的方法(动态)

int main()
{
    //  通过定义类指针变量引用实际对象
    //  类实例化对象 alloc,在堆上申请空间

      Dog * wangcai  =  [Dog alloc];
      [wangcai setAge:5];     //  调用set方法设置属性
      [wangcai setWeight:50];
       int a = [wangcai age];  // 调用get方法取得值
       float w = [wangcai weight];

    //  给对象发消息[对象 方法]、或【对象 消息】
    //  给指针变量wangcai指向的对象发送一条run消息
    //  接收消息的那个对象,称为“消息接收者”

        [wangcai run];
        [wangcai bark];

        NSLog(@"a = %d w = %f",a,w);
    return 0;
}
   

5、【方法的调用】

无参无返回值格式:  [对象/类名   消息/方法/函数名]

无返回值 有参数:     [对象/类名   消息/方法/函数名:参数]

有返回值的方法调用  返回值类型的变量 =  [对象/类名   消息/方法/函数名]

/*

OC对象方法和函数的区别

1.函数属于整个文件,在文件的任意地方都能调用;对象方法只属于对象,只有对象才能调用对象方法

2.对象方法只能声明在@interface和@end之间,对象方法只能实现在@implementation和@end之间.

函数的声明和定义可以写在任意地方,函数不能归某个类所有,只属于某个文件

*/

补充:

对象在内存中的存储情况

1.每一个对象都有自己的成员变量,每个对象的成员变量之间是独立,互不影响

2.每一个对象内部都有方法列表,方法的代码都的一样的

时间: 2024-07-30 00:23:23

iOS开发之oc(回顾笔记)--类与对象(1)的相关文章

ios开发之OC基础-类和对象

本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再将零散的知识点整理出来.这样的学习方法会带来更多的收获,同时要多做练习,按照思路,默写.改写代码.在这里,感谢欧阳坚老师,学习你的课程使我走上了ios的开发之路. 一定要明确一个要从事的方向,要不然就会感到迷茫.学习ios开发,并且从事ios开发这个行业,这就是我的选择.看到我的博客系列文章,其中大

李洪强iOS开发之OC语言类的深入和分类

OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件结构图: 在分类中添加一个方法 Study方法的实现 测试程序: (二)分类的使用注意 (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量 (2)在分类方法的实现中可以访问原来类中的成员变量: (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警

iOS开发之oc(十)--类的本质、description、SEL

(一)类的本质 1.类也是个对象 其实类也是一个对象,是Class类型,简称“类对象”. // Class类型的定义 typedef struct objc_class *Class; // 类名就代表着类对象,每个类只有一个类对象 2.+load和+initialize +load >  在程序启动的时候会加载所有的类和分类,并调用所有类和分类的+load方法 >先加载父类,再加载子类:也就是先调用父类的+load,再调用子类的+load >先加载元原始类,再加载分类 >不管程序

iOS开发之oc(九)--Category-分类

需求:如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 >继承 >分类(Category) (一)了解Catagory 1. Catagory,可以动态的为已经存在的类添加新的行为(方法),功能扩展,使用Category对类进行扩展时,不需要创建子类. Category使用简单的方式,实现了类的相关方法的模块化,把不同的类方法分配到不同的分类文件中 category(分类.类别.类目)--(用来功能分类,分工,利于开发,一般以功能命名) 2.示例 //声明 @interface 类

iOS开发之OC面试题总结

1.简述OC中内存管理机制 OC的内存管理机制是自动引用技术,内存管理的原则是谁开辟谁释放,分为ARC和MRC,MRC的话就是需要我们程序员手动管理内存,ARC不需要我们手动管理内存,系统会自行管理. 2.readwrite,readonly,assign,retain,copy,nonatomic .atomic.strong.weak属性的作用? readWrite读写特性, 可读可写. readonly只读, 只有getter, 没有setter. assign一般用于基本数据类型和ID类

iOS开发之oc(十七)--Foundation(2)NSString及简单的字符串读取和写入

NSString : 不可变字符串 NSMutableString : 可变字符串 // 重点注意:URL不能读取文件名为中文的文件,否则为null,读不出来,要换为英文 // URL读取文件才是万能 下面是一些功能的代码 1.创建和读取 void stringCreate() { /* 1.字符串的创建的方法 */ NSString *s1 = @"jack"; //NSString *s2 = [[NSString alloc] initWithString:@"jack

iOS开发之oc(十二)--内存管理ARC

(一)自动内存管理 --ARC 1>简单点说就是让编译器完成堆空间的引用计数的加减,自动释放,程序员不再写retain 和release等方法 2>OC的自动内存管理不同于java 的垃圾回收,而是在预处理是直接在应该保留的地方加上retain,在应该改释放的地方加上release,是直接添加代码 3>从效率上讲,ARC优于手动内存管理 2.1.1 ARC 的局限性 1>使用ARC可能因为代码的不规范,导致内存提前释放 2>导入第三方库,或者导入旧代码,这些代码不支持ARC

李洪强iOS开发之OC语言基础知识

OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程   二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行

李洪强iOS开发之OC语言BLOCK和协议

OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么? 苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似性: (1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. 标识符 ^ (二)基本使用 (1)定义BLOCK变量 Int (^SumBlock)(int,int);//有参数,返回值类型为int Void (^MyBlock)()://无参数,返回值类型为空 (2)利用block封装代