Objective-C 2.0程序设计 第3章-类、对象和方法
第二、三章objective-c类和对象PPT教学课件

8
显示变量的值
NSlong不仅能显示简单的短语,还能显示变量的值以及计算的结果。 显示两个数相加的结果:
#import <Foundtion/Foundtion.h>
int main(int argc, const * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]init];
int n1,n2,sum;
n1 = 30;
n2 = 432
sum = n1 + n2;
第二章 Objective-c程序 设计
2020/12/10
1
第一个程序:Hello Word!
//First program example #import <Foundtion/Foundtion.h> int main(int argc, const * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]init]; NSlog(@”Hello Word!”); [pool drain]; return 0; } 在Objective-C中,大小写字母是不同的。 1//First program example 注释。增强程序的可读性和维护性。 2//表示注释到这行结尾的任何字符都被编译器忽略。 3/* */表示在此区间的任何字符都被看成注释语句的一部分。不能嵌套 使用
何处开始执行
2020/12/10
4
第一个程序:Hello Word!
//First program example #import <Foundtion/Foundtion.h> int main(int argc, const * argv[]) {
c面向对象程序设计(第二版)

c面向对象程序设计(第二版)面向对象程序设计是一种以对象为基本单位的编程范式,它强调数据和方法的封装、继承和多态性。
这种设计方法使得软件更加模块化、易于扩展和维护。
《面向对象程序设计(第二版)》这本书深入探讨了面向对象编程的基本概念、原理和实践,适合初学者和有经验的程序员学习。
第一章:面向对象编程基础面向对象编程(OOP)的核心概念包括类、对象、封装、继承和多态。
类是现实世界中某些具有共同特征的事物的抽象,而对象则是类的实例。
封装是将数据和操作这些数据的方法组合在一起,隐藏内部细节,只提供必要的接口。
继承允许新类从现有类中继承属性和方法,而多态性则允许对象以多种形式表现。
第二章:类与对象类是创建对象的蓝图。
定义类时,需要指定其属性(数据成员)和方法(成员函数)。
对象是类的实例,每个对象都拥有自己的状态和行为。
书中通过实例展示了如何定义类和创建对象,以及如何通过构造函数和析构函数管理对象的生命周期。
第三章:封装封装是OOP中最重要的概念之一。
它涉及到隐藏对象的内部状态,只通过公共接口与外界交互。
封装可以提高代码的安全性和可维护性。
书中详细讨论了访问修饰符(public、private、protected)的用法,以及如何使用它们来控制类成员的访问权限。
第四章:继承继承是面向对象编程中的另一个关键概念,它允许创建新的类来扩展或修改现有类的行为。
通过继承,可以避免代码重复,提高代码的复用性。
书中介绍了单继承和多继承的概念,以及如何使用继承来实现代码的层次结构。
第五章:多态性多态性允许对象以多种形式表现。
在OOP中,多态性主要通过虚函数和抽象类来实现。
虚函数允许子类重写父类的方法,而抽象类则定义了一组接口,但具体实现由子类完成。
书中讨论了多态性的实现机制,以及如何在实际编程中应用多态性。
第六章:接口与抽象类接口定义了一组方法,但不提供实现。
抽象类是包含至少一个纯虚函数的类。
它们都用于定义对象的契约,确保对象实现特定的行为。
Objective-C类方法与对象方法、区别、与调用

Objective-C类⽅法与对象⽅法、区别、与调⽤类⽅法.1. 特点:以加号( + )开头,调⽤格式: [类名⽅法名]类⽅法的好处:不需要创建实例对象,直接通过类名访问,节省空间,提⾼了效率2.注意事项:类⽅法可以和实例⽅法同名, 相互之间互不影响类⽅法可以从⽗类继承⽽来,⼦类可以重写类⽅法 // ,如description类⽅法类⽅法和实例⽅法⼀样在interface⾥声明, 在implementation⾥实现。
类⽅法由类名调⽤, 实例⽅法由对象调⽤。
在类⽅法⾥使⽤了self, self指代的是调⽤者类在类⽅法中不能使⽤类的成员变量类⽅法和对象⽅法之间不能使⽤self 相互调⽤总结self : 谁调⽤当前⽅法, self就代表谁3.对象⽅法中可以调⽤其他对象⽅法1)当前对象⽅法中创建对象(可以是当前类的实例对象,也可以是其他类的实例对象),使⽤新创建的对象调⽤⽅法2)可以使⽤self3)对象作为⽅法的参数传递过来,可以使⽤传递过来的对象调⽤⽅法4.在类⽅法中可以调⽤其他类的⽅法1)可以直接使⽤类名(或者其他类名)调⽤类⽅法2)可以使⽤self5) 在类⽅法中可以调⽤对象⽅法1)对象作为⽅法的参数传递过来2)可以创建⼀个对象6.类⽅法和对象⽅法的⽐较对象⽅法以减号开头, 可以使⽤成员变量类⽅法以加号开头,不能使⽤成员变量7.类⽅法使⽤场景如果我们调⽤⼀个⽅法,该⽅法中不需要使⽤成员变量,那么我们可以将该⽅法声明为类⽅法以下代码是对上述部分知识点的验证main.m#import <Foundation/Foundation.h>#import "Dog.h"int main(int argc, const char * argv[]) {@autoreleasepool {// 1. 通过类名调⽤eat类⽅法[Dog eat];// 2. 调⽤jump类⽅法Dog *dog = [Dog new];[Dog jump:dog];// [dog bark];}return 0;}Dog.h#import <Foundation/Foundation.h>@interface Dog : NSObject//类⽅法和实例⽅法⼀样在interface⾥声明。
三章节类对象及方法

// compute the area per person in house areaPP = house.area / house.occupants; Console.WriteLine("house has:\n " + house.floors + " floors\n " + house.occupants + " occupants\n " + house.area + " total area\n " + areaPP + " area per person");
该声明语句执行二个功能:第一.声明一个称为circle1的Circle类 类型的变量,该变量不定义对象,实际上它仅仅是一个包含所创 建对象引用的引用变量,第二,使用new运算赋可以创建一个实 际物理对象,并将此对象的引用分配给circle1。
因此可以编写成独立分开的形式:
Circle circle1;
属于类的方法为该类所有的对象共同拥有,不论你对该类 创建多少个对象,属于类的方法只保存一份,这种方法也 称为静态方法,声明时前面要加上static修饰符.
public class Circle { public static int count=1; public const double PI=3.14159; public double xCenter; public double yCenter; public double radius;
因此要访问PI只需写成:
Circle .PI 访问对象变量,需要创建对象,只需写上对象名称, 其后跟着小数点和对象变量名称就可以了.如: 对象名称.对象变量名称
Objective菜鸟教程

Objective-C 入门教程分类编程技术Objective-C是一种简单的计算机语言,设计为可以支持真正的面向对象编程。
Objective-C 通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的ANSI C语言。
类的语法和设计主要是基于Smalltalk,最早的面向对象编程语言之一。
如果你以前使用过其他面向对象编程语言,那么下面的信息可以帮助你学习Objective-C 的基本语法。
许多传统的面向对象概念,例如封装,继承以及多态,在Objective-C中都有所体现。
这里有一些重要的不同,但是这些不同在这文章会表现出来,而且如果你需要还有更多详细的信息存在。
如果你从来没有使用任何编程语言编过程序,那么你至少需要在开始之前,对相关概念进行一些基础的了解。
对象的使用和对象对象架构是iPhone程序设计的基础,理解他们如何交互对创建你的程序非常重要。
想了解面向对象概念的,请参看使用Objective-C进行面向对象编程。
此外,参看Cocoa基础指南可以获得Cocoa中的面向对象设计模式的信息。
Objective-C:C的超集Objective-C是ANSI版本C编程语言的超集,支持C的基本语法。
在C代码中,你定义头文件和源代码文件,从代码实现细节分离公共声明。
Objective-C头文件使用的文件名列在表1中。
表1 Objective-C代码的文件扩展名扩展名内容类型.h 头文件。
头文件包含类,类型,函数和常数的声明。
.m 源代码文件。
这是典型的源代码文件扩展名,可以包含Objective-C和C代码。
.mm 源代码文件。
带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。
仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名。
当你需要在源代码中包含头文件的时候,你可以使用标准的#include编译选项,但是Objective-C提供了更好的方法。
面向对象程序设计之类和对象文稿演示

void display ( )
构。 例: 一个班级作为对象 一个班级作为对象,有两个要素:一是班级的静态特征,如班级所属的专业, 学生人数、班主任姓名等,这种静态特征称为“属性”;另一个是班级的 动态特征,如上课,体育比赛,开会等,称为“行为”。外界向班级发一 个信息(如上课铃声,广播通知),我们称之为“消息”,班级就会发生 一个操作(要么上课,要么开会)
程),也支持基于对象和面向对象的程序设计。 所谓基于对象,是指程序是以类和对象为基础,程序的操
作是围绕对象进行的。 所谓面向对象,是指,在基于对象的基础上,利用了继承
机制和多态性。 面向对象的程序设计特点:
类具有对数据的抽象性、封装性、继承性、多态性。
2.2 类的声明和对象的定义
类和对象的关系 C++中,对象的类型称为类( class )。类代表了某一批对
面向对象程序设计之类和对象文稿演示
优选面向对象程序 设计之类和对象
2.1 面向对象程序设计方法概述
程序设计者的任务有两个:一是设计所需要的类和对象, 即确定那些数据和操作封装在一起;(类设计者、核心模块产 品提供商) 二是考虑怎样向有关对象发送消息,以启动相关对象的操作。 (主程序设计者,外包程序,面向用户的公司)
新设计一个新类B,只需要把A类拿过来,在此基础上添加新 内容就可以了。这就是面向对象程序设计的继承机制。
C++提供继承机制,大大节省了编程工作量,这就是所 谓“软件重用( software reusability )”的思想。对于大型软 件的开发具有重要意义。
2.1 面向对象程序设计方法概述
什么是多态性( polymorphism )? 如果有几个相似而不同的对象,人们往往要求在向它们
面向对象程序设计基础知识

面向对象程序设计基础知识面向对象程序设计(Object-oriented programming,简称OOP)是一种让计算机程序更具可维护性、可扩展性和可重用性的编程范式。
其中,基于类和对象的概念是核心要素。
本文将介绍面向对象程序设计的基础知识,包括类与对象、封装与继承、多态和抽象等。
一、类与对象类是面向对象程序设计的基本单位,是对一类具有相同属性和行为的对象的抽象描述。
类可以看作是对象的模板或蓝图,它定义了对象的属性和方法。
对象则是类的实例化,是具体的实体。
在面向对象程序设计中,类包含两个主要的成员:属性和方法。
属性是类的特性,描述了对象的状态;方法是类的行为,描述了对象的操作。
通过封装属性和方法,类实现了对数据和行为的封装,使得程序的逻辑更加清晰和灵活。
二、封装与继承封装是将类的属性和方法封装在一起,形成一个独立的单元。
通过封装,我们可以隐藏类的内部实现细节,只暴露必要的接口给外部使用。
这种数据与行为的封装增强了类的安全性和可靠性,同时也降低了程序的耦合性。
继承是面向对象程序设计的另一个重要概念。
通过继承,一个类可以继承另一个类的属性和方法,从而实现代码的复用和扩展。
继承关系可以形成类的层次结构,其中父类被称为超类或基类,子类被称为派生类。
派生类可以重写父类的方法或添加自己的方法,实现对父类的功能增强。
三、多态和抽象多态是指同一种类型的对象在不同情况下表现出不同的行为。
通过多态,我们可以根据对象的具体类型调用相应的方法,而不关心对象的具体实现。
多态提高了代码的灵活性和可扩展性,使得程序更易于维护和扩展。
抽象是将复杂的事物简化为一个易于理解的模型。
在面向对象程序设计中,抽象提供了接口和抽象类两种机制。
接口定义了一个类应该具有哪些方法,但不提供具体的实现;抽象类则是一种中间状态,既可以有定义了方法的具体实现,又可以有定义了接口的抽象方法。
通过接口和抽象类,我们可以实现代码的分离和模块化,提高代码的灵活性和复用性。
C#程序设计第3章面向对象的程序设计

}
Student stu2=new Student();
3.3类与对象
3.4.1类的定义 在程序中,类是具有相同属性的对象的集合与抽象。它是一
个创建现实对象的模板。 对象是类的具体实例。类实际 上也可以看做是自己定义的数据类型。
3.3类与对象
3.4.1类的定义 在类声明中需要使用关键字class,其简单的定义格式为:
class 类名 {
//类体 } 其中,类体是以一对大括号开始和结束的,在一对大括号后 面可以跟一个分号,也可以省略分号;类体中的成员种类 较多,常见的有字段、属性、方法等;类的所有成员的声 明均需在类体中。
3.4 字段与属性
例3-5:创建两个Student对象,访问对 象中的属性。
namespace ch3_5 {
public class Student {
/// <summary> /// 姓名字段 /// </summary> private string name; /// <summary> /// 姓名属性 /// </summary> public string Name {
3.4 字段与属性
3.4.1 字段的定义 字段是类成员中最基础也较重要的一个成员,是与对象或类
相关联的变量。其作用主要是用于保存与类有关的一些数 据。它的声明格式与普通变量的声明格式基本相同,声明 位置没有特殊要求,习惯上将字段说明放在类体中的最前 面。 定义字段的基本格式为: [访问修饰符] 数据类型 字段名
get { return name; } set { name = value; }
/// <summary> /// 学号字段 /// </summary> private string id; /// <summary> /// 学号属性 /// </summary> public string Id { get { return id; } set { id = value; } } /// <summary> /// 电话号码字段 /// </summary> private string phone; /// <summary> /// 电话号码属性
面向对象程序设计第3章 类与对象

返回本节
第3章 类与对象
3.3.3 拷贝构造函数
1. 拷贝构造函数的特点 拷贝构造函数是一种特殊的构造函数,它 的作用是用一个已经存在的对象去初始化另一 个对象。为了保证所引用的对象不被修改,通 常把引用参数声明为const参数。其格式为:
<类名>::<类名> (const <类名>&<对象名>) { 〈函数体〉 }
在程序运行时,通过为对象分配存储空间 来创建对象。创建对象时,类被用作样板,对 象称为类的实例。 为对象分配存储空间主要有静态分配和动 态分配两种方式。堆对象是在程序运行时根据 需要随时可以被创建或删除的对象,只有堆对 象采用动态分配方式,
第3章 类与对象
3.2.2 对象的创建和销毁
静态分配方式:在声明对象时分配存储空 间,对象生命期结束时收回所分配存储空间。 在这种分配方式下,对象的创建和销毁是 由程序本身决定的。 例如声明: Point p1,p2,p[3]; 时,即创建对象p1,p2和对象数组p。
……
}
第3章 类与对象
3.5.1 子对象
对子对象的构造函数的调用顺序取决于这 些子对象在类中说明的顺序,与它们在成员初 始化列表中给出的顺序无关。 当建立X类的对象时,先调用子对象的构 造函数,初始化子对象,然后才执行X类的构 造函数,初始化X类中的其他成员。
第3章 类与对象
3.5.1 子对象
【例3.10】分析下面程序中构造函数与析构函 数的调用顺序。
…
…
private:
}; };
A a;
…
第3章 类与对象
3.5.1 子对象
2. 子对象的初始化
为初始化子对象,X的构造函数要调用 这些对象成员所在类的构造函数,于是X类 的构造函数中就应包含数据成员初始化列表, 用来给子对象进行初始化。
objective c 类方法

Objective C 类方法是指属于类而不是属于特定实例的方法。
在Objective C 中,类方法以加号(+)作为方法前缀,而实例方法以减号(-)作为方法前缀。
类方法通常用于执行与整个类相关的操作,而不需要特定实例的上下文信息。
在 Objective C 中,类方法的定义和调用与实例方法有所不同。
下面我们将深入探讨 Objective C 类方法的特点和用法。
一、定义类方法类方法是在 Objective C 类的实现文件中定义的。
在定义类方法时,需要使用加号(+)作为方法前缀,并在方法名称后面跟上类名,以此来表示这是一个类方法。
例如:```objective-c+ (void)printHello {NSLog(@"Hello, this is a class method!");}```在这个例子中,我们定义了一个名为printHello的类方法。
该方法使用了加号(+)作为前缀,表示它是一个类方法。
二、调用类方法与实例方法不同,类方法是通过类本身而不是实例来调用的。
在调用类方法时,直接使用类名来调用即可,无需创建类的实例。
例如:```objective-c[ClassName printHello];```在这里,ClassName是类的名称,我们使用类名直接调用printHello 这个类方法。
三、类方法的特点1. 类方法可以在没有实例的情况下进行调用,因为它们不依赖于特定的实例。
2. 类方法通常用于执行与整个类相关的操作,例如创建实例、管理全局变量等。
3. 类方法不能直接访问实例变量,因为它们不属于任何特定的实例,只能访问静态变量或全局变量。
四、个人观点和理解在我看来,类方法在 Objective C 中是非常有用的。
它们提供了一种执行与整个类相关的操作的方式,而不需要创建类的实例。
这在某些情况下非常方便,特别是当我们需要执行一些全局操作或者创建单例对象时。
通过使用类方法,我们可以更加灵活地组织和管理代码,使得代码更加清晰和易于维护。
objective c类方法

objective c类方法Objective-C是一种面向对象的编程语言,广泛应用于iOS和macOS开发中。
在Objective-C 中,类方法(Class Method)是指属于类本身而不是类的实例的方法。
类方法可以直接通过类名调用,不需要先创建类的对象。
本文将详细介绍Objective-C的类方法,包括其定义、调用、特点、应用场景等方面。
一、类方法的定义Objective-C中的类方法是在类的实现文件(.m文件)中定义的,使用"+"符号表示。
通常在类的接口文件(.h文件)中会声明类方法的原型,在实现文件中实现。
例如,下面是一个简单的类方法的定义:+ (void)printHello {NSLog(@"Hello, World!");以上代码中,`printHello`是一个类方法,无返回值(`void`),用于在控制台输出"Hello, World!"。
二、类方法的调用类方法可以通过类名直接调用,不需要先创建类的对象。
调用类方法的格式为:[类名方法名]。
例如,使用上述示例中的类方法进行调用:[ClassName printHello];其中,`ClassName`是类的名称,`printHello`是方法的名称。
三、类方法的特点1. 类方法属于类本身而不是实例对象,因此可以直接通过类名调用。
2. 类方法可以直接访问类的静态变量,不需要先创建类的对象。
3. 类方法不能直接访问实例变量,因为类方法不依赖于实例。
4. 类方法在整个程序运行期间保持不变,可以被多个实例对象共享使用。
为了更好地理解类方法的特点,我们以一个计算圆的面积和周长的例子进行说明。
首先,创建一个名为Circle的类,类中定义了一个类方法`calculateAreaWithRadius:`用于计算圆的面积。
@interface Circle : NSObject+ (CGFloat)calculateAreaWithRadius:(CGFloat)radius;在实现文件中,我们通过使用类方法进行圆的面积计算:@implementation Circle+ (CGFloat)calculateAreaWithRadius:(CGFloat)radius {return M_PI * radius * radius;然后,我们可以在其他地方直接使用该类方法,而无需先创建圆的对象。
objective c 类方法

objective c 类方法Objective-C是一种面向对象的编程语言,它支持类方法和实例方法。
类方法是指只能由类本身调用的方法,而不是由类的实例调用的方法。
在Objective-C中,类方法使用"+"符号来声明和实现。
类方法的格式如下:```+ (返回类型)方法名:(参数类型)参数名 {// 方法实现代码}```类方法可以在没有实例的情况下调用,并且在整个应用程序中只存在一个副本,因此它们常用于实现单例模式、全局共享的方法等。
下面我将介绍一些关于Objective-C类方法的常见用法和最佳实践。
1. 创建单例模式类方法被广泛用于创建单例模式的实例。
在单例模式中,一个类只能创建一个唯一的实例,并提供一个全局访问点。
通常的实现方式是在类方法中创建实例,并将其存储为静态变量,确保它只被创建一次。
```objective-c+ (instancetype)sharedInstance {static MyClass *sharedInstance = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{sharedInstance = [[MyClass alloc] init];});return sharedInstance;}```在这个例子中,类方法`sharedInstance`通过`dispatch_once`确保只有一个线程能够创建实例,并使用静态变量来存储唯一的实例。
2. 计算类级别的属性类方法也可以用于计算类级别的属性。
例如,我们想要在整个应用程序中跟踪某个类的实例数量,我们可以使用类方法来实现一个静态变量来计数实例的数量。
```objective-c+ (NSInteger)instanceCount {static NSInteger count = 0;return count;}+ (instancetype)newInstance {MyClass *instance = [[MyClass alloc] init];[self setInstanceCount:[self instanceCount] + 1];return instance;}```在这个例子中,类方法`newInstance`创建一个新的实例,并通过`setInstanceCount`方法增加实例计数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Objective-C 2.0程序设计
3.2 实例和方法
回顾上一个列表,使用新语法为它编写所有方法。 在此之前,你需要获得一辆车。去制造厂购买一辆,如下: yourCar = [ Car new ]; 得到一辆新车 向Car类(消息的接收者)发送一条消息,请求它卖给你一辆新车。得到 的对象将被存储到变量yourCar中。 因为你到制造厂购买了一辆新汽车,所以这个新汽车叫做制造厂方法, 或者类方法。对新车执行的其余操作都将是实例方法,因为它们应用于你的 新车。 [yourCar prep]; 准备好第一次使用 [yourCar drive]; 驾驶汽车 [yourCar wash]; 洗车 [yourCar getGas]; 如果需要就给汽车加油 [yourCar service]; 维修 [yourCar topDown]; [yourCar topUp];
对象可能是面向计算机的对象,例如窗口,矩形,一段文本,或者是计算 器,歌曲的播放列表。就像用于汽车的方法: [myWindow erase]; 清除窗口 [myRect getArea]; 计算矩形的面积 [UserText spellCheck]; 对一些文本进行拼写检查 [deskCalculator clearEntry]; 清除最后一次输入 [favoritePlaylist showSongs]; 在播放列表显示喜欢的歌曲 [phoneNumber dial]; 拨号
对象 你的汽车
武汉大学国际软件学院
第3章 类、对象和方法
3.1 到底什么是对象
3.2 实例和方法
3.3 用于处理分数的 Objective-C类 3.4 @interface部分
武汉大学国际软件学院
Objective-C 2.0程序设计
3.2 实例和方法
对象是类的独特表示,每个对象都包含一些通常对该对象来说是私有的信 息(数据)。方法提供访问和改变这些数据的手段。
武汉大学国际软件学院
Objective-C 2.0程序设计
第3章 类、对象和方法
3.1 到底什么是对象
Байду номын сангаас
3.2 实例和方法
3.3 用于处理分数的 Objective-C类 3.4 @interface部分
武汉大学国际软件学院
Objective-C 2.0程序设计
3.4 @interface部分
定义新类时,首先,要通知Objective-C编译器这个类来自何处。就是说, 必须命名它的父类。 其次,必须确定这个类对象要存储的数据的类型。就是说,必须描述类 成员将包含的数据。我们把这些成员叫做实例变量。 最后,还必须定义在处理该类的对象时将要用到的各种操作或方法的类型。 这些工作都在程序中名为@interface的特殊部分内完成。
武汉大学国际软件学院
该部分的一般格式类似于: @interface NewClassName: ParentClassName { memberDeclarations; } methodDeclarations; @end
Objective-C 2.0程序设计
3.4.1 选择名称
制定名称的规则相当简单:名称必须以字母或下划线(_)开头,之后可 以是任何(大写或小写)字母、下划线或者0到9之间的数字组合。
[ClassOrInstance method ];
方括号后紧跟 类的名称或该 类的实例名称
一个或 多个空格
要执行的方法
分号终止
请求一个类或实例来执行某个操作时,就是在向它发送一条消息,消息 的接收者称为接收者。因此有另一种方法可以表示前面所表示的一般格式。
武汉大学国际软件学院
[ receiver message ];
武汉大学国际软件学院
Objective-C 2.0程序设计
3.3 用于处理分数的 Objective-C类
代码清单3-2(续) ----------------------------------------------------------------------------------------------//---- @implementation section ---@implementation Fraction -(void) print { NSLog (@”%i/%i”, numerator, denominator); } -(void) setNumerator: (int) n { numerator = n; } -(void) setDenominator: (int) d { denominator = d; } @end Objective-C 2.0程序设计
3.7 实例变量的访问以及数据封装 3.8 小结
武汉大学国际软件学院
Objective-C 2.0程序设计
3.1 到底什么是对象
对象就是一个事物。把面向对象的程序设计看成一个事物,而且相对这个 事物做些工作。 与C语言不同,C语言通常称为过程性语言。在C语言中,通常先考虑要 做什么,然后才关注对象。与面向对象的思考过程相反。 在面向对象的用语中,“你的汽车”是汽车的一个实例。如果继续使用 术语,car就是类的名称,这个实例就是从该类创建的。因此,每制造一辆 新汽车,就会创建汽车类的一个新实例,而且汽车的每个实例都称作一个对 象。 表3-1 对象的操作 使用对象执行的操作 驾驶 加油 洗车 维修 Objective-C 2.0程序设计
Objective-C 2.0程序设计
武汉大学国际软件学院
3.3 用于处理分数的 Objective-C类
代码清单3-2 输出 The value of myFraction is: 1/3
从代码清单3-2的注释中可以看到,程序在逻辑上分为3个部分: • @interface部分 • @implementation部分 • program部分 @interface部分用于描述类,类的数据成分以及类的方法; 而@implementation部分包括实现这些方法的实际代码。 最后program部分包含实现程序预期目的的程序代码。
第3章 类、对象和方法
第3章 类、对象和方法
3.1 到底什么是对象
3.2 实例和方法
3.3 用于处理分数的 Objective-C类 3.4 @interface部分
武汉大学国际软件学院
Objective-C 2.0程序设计
第3章 类、对象和方法
3.5 @implementation部分
3.6 program部分
武汉大学国际软件学院
是否为一辆敞篷车
Objective-C 2.0程序设计
3.2 实例和方法
currentMileage = [yourCar currentOdometer]; 该方法显示的实例方法可返回信息,即当前的行驶里程,该信息存储在程 序中的currentMileage变量内。
将同一个方法应用于不同的对象是面向对象程序设计背后的主要概念之一。
武汉大学国际软件学院
3.3 用于处理分数的 Objective-C类
代码清单3-2(续) --------------------------------------------------------------------------------------------------//---- program section ---int main (int argc, char *argv[]) { @autoreleasepool{ Fraction *myFraction; // Create an instance of a Fraction myFraction = [Fraction alloc]; myFraction = [myFraction init]; // Set fraction to 1/3 [myFraction setNumerator: 1]; [myFraction setDenominator: 3]; // Display the fraction using the print method NSLog (@”The value of myFraction is:”); [myFraction print]; } return 0; }
武汉大学国际软件学院
Objective-C 2.0程序设计
第3章 类、对象和方法
3.1 到底什么是对象
3.2 实例和方法
3.3 用于处理分数的 Objective-C类 3.4 @interface部分
武汉大学国际软件学院
Objective-C 2.0程序设计
3.3 用于处理分数的 Objective-C类
武汉大学国际软件学院
3.3 用于处理分数的 Objective-C类
在代码清单3-1中,分数是以分子和分母的形式表示的。创建自动释放池 后,main中的前两行,将变量numerator和denominator都声明为整型,并 赋予它们初值1和3.这两个程序行与下面的程序行等价: int numerator, denominator; numerator = 1; denominator = 3; 通过将1存储到变量numerator中,将3存储到变量denominator中可表示 分数1/3。如果需要在程序中存储多个分数,这种方法可能比较麻烦。每次 要引用分数时,都必须引用相应的分子和分母。 如果能把一个分数定义成单个实体,用单个名称(例如myFraction)来 共同引用它的分子和分母,那么会更好。
下面是一列合法的名称:
•sum •pieceFlag •i •myLocation •numberOfMove •_sysFlag •ChessBoard
武汉大学国际软件学院
这种方法可以使用objective-C来实现,并从定义一个新类开始。
Objective-C 2.0程序设计