OC基础回顾(二)面向对象编程

OC基础回顾(二)面向对象编程

面向对象编程:Object-Oriented Programming,缩写OOP。是一种编程技术,最初是为了编写模拟程序而开发。Objective-C是一种面向对象的语言。


  • 间接,是OOP的一个关键概念,就是让其他人代替你去做某件事。

  • 在面向对象编程中使用间接
    间接是OOP的核心。OOP使用间接来获取数据(利用变量、文件和参数等)。OOP真正的革命性在于它使用间接来调用代码,不是直接调用一个函数,而是间接调用。只要理解了这一点,就理解了OOP的内涵,其他一切都是间接产生的引申概念。

  • Objective-C中的OOP
    创建某个特定类之前,Objective-C编译器需要一些有关该类的信息,尤其是对象的数据成员以及提供的功能。可以使用@interface指令把这些信息传递给编译器。

@interface Circle:NSObject
{
     ShapeColor fillColor;
     ShapeRect bounds; 
} 

含义:@interface行中的NSObject告诉编译器,Circle类是基于NSObject类的。该语句表明每个Circle类都是一个NSObject,并且每个Circle类都将继承自NSObject类定义的所有行为。
花括号中的内容,表示创建的新的Circle对象都由这两个元素构成。fillColor和bounds被称为Circle类的实例变量。

-(void)draw;
-(void)setFillColor:(ShapeColor) fillColor;
-(void)setBounds:(ShapeRect) bounds;

以上被称为 方法声明。
方法声明列出了每个方法的名称、方法返回值的类型和某些参数。参数的类型在圆括号中定义。

@end//Circle

最后一行代码告诉编译器,我们已经完成了类的声明。
虽然在@end后面添加注释不是必须的,但是我们还是提倡在@end后边提添加注释来标明类的名称。这样的话,通过注释就可以很容易地知道当前看的是什么。

  • @implementation部分
    通常,接口被称为API(application programming interface 首字母缩写)。而真正使对象能够运行的代码位于@implementation中。
@implementation Circle

@implementation是一个编译器指令,表示你将为这个类提供代码。@implementation后面是类名。该行结尾处没有分号,因为Objective-C编译器指令后不必使用分号。

  • 可以在@implementation中定义那些没有在@interface中声明过的方法。把它们当做在仅能在当前类中使用的私有方法。但是要注意的是:Objective-C中不存在真正的私有方法,也无法把某个方法标识为私有方法来禁止其他代码调用。这是Objective-C动态本质的副作用。

  • 实例化对象
    实例化对象时,需要分配内存,然后将这些内存初始化并保存为有用的默认值,这些值不同于通过新分配的内存获得的随机值。内存分配和初始化工作完成后,就意味着新的对象实例已经创建好了。
    由于对象的局部变量只在对象的实例中有效,因此我们称它们为实例变量,通常简写为ivar。
    为了创建一个新的对象,我们需要向相应的类发送new消息,例如 [Circle new]就是实例化了一个Circle对象。

  • 扩展
    剪切和粘贴的代码风格的一个缺点是容易出现大量的重复代码。例如Triangle类和Circle类都有setFillColor方法和setBounds方法。而继承就能有效地避免冗余代码。

  • 开放/关闭原则(Open/Closed Principle)
    即软件实体应当对扩展开放,而对修改关闭。应对变化时,遵循开闭原则的软件会更加坚实耐用,因为你不必修改哪些正常运行的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值