OC类与对象实例化,类之间的方法调用小题目

两个OC类与对象实例化题目

要求:

* 类名、属性名、属性类型、方法名、方法参数、方法返回值自拟

* 自己写main函数测试设计是否合理

/*

1.设计一个”狗“类

1> 属性

* 颜色

* 速度(单位是m/s)

* 性别

* 体重(单位是kg)

2> 行为

* 吃:每吃一次,体重增加0.5kg,输出吃完后的体重

* 吠(叫):输出所有的属性

* 跑:每跑一次,体重减少0.5kg,输出速度和跑完后的体重

* 比较颜色:跟别的狗比较颜色,如果一样,返回YES,不一样,返回NO

* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)

*/

/*

#import <Foundation/Foundation.h>

typedef enum {yellow,black,red,green}dColor;

typedef enum {公,母}dSex;

@interface Dog : NSObject

{

@public

dColor _color;

int _speed;

dSex _sex;

float _weight;

}

-(void)eat:(float)weight;

-(void)wangwang;

-(void)run:(float)weight;

-(BOOL)abccolor:(dColor)color1 andColor:(dColor)color2;

-(int)abcspeed:(int)speed1 andSpeed:(int)speed2;

@end

@implementation Dog

-(void)eat:(float)weight

{

weight+=0.5;

NSLog(@"weight changes:%.2f",weight);

}

-(void)wangwang

{

NSLog(@"color:%d,speed:%d,sex:%d,weight:%.2f",_color,_speed,_sex,_weight);

}

-(void)run:(float)weight

{

weight=weight-0.5;

NSLog(@"weight changes:%.2f",weight);

}

-(BOOL)abccolor:(dColor)color1 andColor:(dColor)color2

{

if(color1==color2)

return YES;

else

return NO;

}

-(int)abcspeed:(int)speed1 andSpeed:(int)speed2

{

int speed12=speed1-speed2;

return speed12;

}

@end

int main()

{

@autoreleasepool {

Dog *dog1=[Dog new];

dog1->_color=red;

dog1->_sex=公;

dog1->_speed=50;

dog1->_weight=8.5;

Dog *dog2=[Dog new];

dog2->_color=yellow;

dog2->_sex=母;

dog2->_speed=30;

dog2->_weight=6.5;

[dog1 eat:dog1->_weight];

[dog1 wangwang];

[dog1 run:dog1->_weight];

BOOL abc1=[dog1 abccolor:dog1->_color andColor:dog2->_color];

int abc2=[dog1 abcspeed:dog1->_speed andSpeed:dog2->_speed];

NSLog(@"颜色一样吗?答:%d",abc1);

NSLog(@"速度差是:%d",abc2);

}

return 0;

}

*/

/*

2.结合前面的“狗”类,设计一个“人”类

1> 属性

* 姓名

* 狗(养了一条狗)

2> 行为

* 喂狗:每喂一次,狗就会执行“吃”这个行为

* 遛狗:每溜一次,狗就会执行“跑”这个行为

*/

#import <Foundation/Foundation.h>

typedef enum {yellow,black,red,green}dColor;

typedef enum {公,母}dSex;

//Dog 类

@interface Dog : NSObject

{

@public

dColor _color;

int _speed;

dSex _sex;

float _weight;

}

//Dog 的类方法(行为)声明

-(void)eat:(float)weight;

-(void)wangwang;

-(void)run:(float)weight;

-(BOOL)abccolor:(dColor)color1 andColor:(dColor)color2;

-(int)abcspeed:(int)speed1 andSpeed:(int)speed2;

@end

//Person 类

@interface Person : NSObject

{

@public

NSString *_name;

Dog *_dog;  //这个属性定义为Dog类,是Dog类的一个实例对象,所以_dog可以调用Dog类中的方法

}

//Person 的类方法(行为)声明

-(void)weigou;

-(void)liugou;

@end

//Dog 类方法定义

@implementation Dog

-(void)eat:(float)weight

{

weight+=0.5;

NSLog(@"weight changes:%.2f",weight);

}

-(void)run:(float)weight

{

weight=weight-0.5;

NSLog(@"weight changes:%.2f",weight);

}

@end

//Person 类方法定义

@implementation Person

-(void)weigou{

[_dog eat:_dog->_weight];  //在Person类里面的weigou和liugou方法中调用Dog类里面的eat和run方法,这里的调用方法的属性正好是Dog类的一个对象

}

-(void)liugou{

[_dog run:_dog->_weight];  //同上

}

@end

int main()

{

@autoreleasepool {

Person *man1=[Person new];  //创建一个Person类的实例对象

Dog *xiaobai=[Dog new];  //创建一个Dog类的对象,这个Dog类的实例对象正好就是我们创建的Person类实例对象的一个属性

xiaobai->_weight=10;  //我们只需要xiaobai的_weight属性,所以只初始化这个属性就可以了

man1->_dog=xiaobai;

[man1 weigou];

[man1 liugou];

}

return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 18:35:03

OC类与对象实例化,类之间的方法调用小题目的相关文章

类的对象和类的指针

类的对象和类的指针的区别zz 如下程序: #include <iostream> #include <string> using namespace std; class Student {     public:     static int number;     string name; public:     Student() { } void set(string str)     {        name = str;         number++; // 调用

oc学习之对象作为类的属性

对象做为类的属性 1. 一个Target中的类无法直接在另外1个Target中访问. 2. 类的属性代表什么? a. 类的属性代表这类事物具有的共同的特征 b. 类的属性代表这个类所拥有的东西. 灯: 属性: 形状 功率 价格  品牌 剩余寿命 方法: 照明. 音响: 方法: 发声音. 门: 属性: 尺寸 材料 颜色 价格 方法: 开 关 3. 类的方法代表什么? a. 代表这个类所具备的行为. 这个类所具备的功能. b. 一个类有什么方法 就去分析这个类有什么功能. 4. 属性的本质是变量.

深入理解final 类String 对象的创建以及内部方法

学习过程中的笔记 : int indexOf(int ch) :获取字符在字符串中第一次出现的位置,如果不存在,则返回-1 int indexOf(int ch,int fromIndex): 从fromIndex位置开始查找,查找ch第一次出现的位置 获取位置 int indexOf(int ch) :获取字符在字符串中第一次出现的位置,如果不存在,则返回-1 int indexOf(int ch,int fromIndex): 从fromIndex位置开始查找,查找ch第一次出现的位置 in

Lesson 04:类和对象,类的成员变量、成员方法、构造方法

1 类(class) java是面向对象程序设计(OPP),类是构造对象的模板或者蓝图.由类构造(construst)对象的过程称为创建类的实例(instance).类的构成: 1 package 包名 2 class 类名 extends 父类名 implements 接口名{ 3 成员变量: 4 构造方法: 5 成员方法: 6 } 7 //一个简化的类的结构 成员变量 成员方法:包含返回值类型.参数列表.方法主体等要素 (1)方法的声明: 1 //方法的声明没有函数体 2 public in

python的类和对象(类的静态字段)

转自:http://www.cnblogs.com/Eva-J/p/5044411.html 什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首先看它的位置,是在father类中,而不是在__init__中.那么一个小小的静态字段,我为什么要特意写一篇番外给它呢?耐着性子看下去,你就会发现一个小小的类变量,却折射出了整个类的世界. 首先我们先来解释

P4 类、对象、类成员简介

本节内容 类(class)是显示世界事物的模型. 现实中的一架飞机========================>>>抽象为程序世界中的类 类与对象的关系 对象也叫做实例,是类经过实例化得到的内存中的事宜 有些类不能被实例化,如数学,我们不能说一个数学 依照类,我们可以创建对象>>>这就是实例化 现实世界中常称对象,程序世界中常称实例,二者并无太大区别,常常混用,不用太纠结. 使用new操作符创建对象 △14:15开始编写程序>>>接下来我们自己动手

C#002类,对象,类成员简介

本节内容 1.类(class)是现实世界事物的模型 2.类与对象的关系,什么时候叫“对象”什么时候叫“实例” 3.引用变量与实例的关系 4.类的三大成员: ①属性(Property): ②方法(Method): ③事件(Event) 5.类的静态成员与实例成员 ①关于“绑定”(Binding) 1.类(class)是现实世界事物的模型 类是对现实世界事物进行抽象所得到的结果类包括“物质”(实体)与“运动”(逻辑)建模是一个去伪存真.由表及里的过程 2.类与对象的关系 ①对象也叫实例,是类经过“实

第1章 类和对象——定义类和创建对象

1.1     定义类.创建对象 在编程时,要定义类,然后在创建这个类的对象(实例). 1.1.1 定义类 定义类的语法个式如下: 访问修饰符 Class 类名 {     类的成员1:     ................     类的成员n:       } 各项的含义如下. 1)  “访问修饰符”用来限制类的作用范围或访问级别,类的修饰符只有public和internal两种(嵌套类除外).其中,声明为public的类可以被任何其他类访问:声明为internal的类智只能从同一个程序集

PHP面向对象基本概念 类与对象 静态属性 构造/析构方法

1.传统的面向过程和现代面向对象  传统面向过程:是指把将要完成的工作分为若干个步骤一步一步的完成  现代面向对象:是指将要完成的工作拆分为一个一个的对象的任务(功能)每个对象独自完成自己的任务 可以理解为: 一个大扫除 面向过程就是一个人干完大扫除 面向对象就是 一个人扫地 一个人拖地2.面向对象的基本概念  三大特性:封装 继承 多态  类与对象:          张三是一个对象,李四是一个对象 他们都隶属于人这个类         类:描述某一些具有共同特征的物体的概念