OC-对象和方法的练习

练习题讲解

思考&实现1:

设计一个“狗”类

1)属性:颜色,速度,性别,体重

2)行为

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

吠:输出所有的属性

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

比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,做

减法得非零值,返回YES(1)

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

#import<Foundation/Foundation.h>

//定义狗的颜色的枚举

typedef enum{kColorWhite,kColorYellow,kColorHua,kColorBlack}Color;

typedef enum{kSexGong,kSexMu,kSexYao}Sex;

#pragma mark 狗类的定义

@interface Dog:NSObject

{

//狗的实例变量

Color _color;  //狗的颜色  NSString *_color;

float _weight;  //狗的体重

Sex _sex;     //性别

int _speed;   //速度

}

//狗的行为

-(void)eat:(NSString *)foodName;  //体重+0.5

-(void)run; //体重-0.5

-(void)bark;  //打印所有的信息

//比较狗毛的颜色

-(void) isCompareColorWithOther:(Dog *)dog;

//比较速度

-(void)CompareSpeedWithOther:(Dog *)dog;

@end

#pragma mark 狗类的实现

@implementation DOg

-(void)eat:(NSString *)foodName {

_weight += 0.5f;

NSLog(@"狗正在吃%@,吃完后还打了个嗝!",foodName);

}

-(void)run {

_weight -= 0.5f;

NSLog(@"狗正在以时速%d的速度向前疯跑!",_speed);

}

-(void)bark {

NSLog(@"性别:%d,颜色:%d,速度:%d,当前体重:%d",_sex,_color,_speed,_weight);

}

-(void) isCompareColorWithOther:(Dog *)dog {

if(_color == dog->_color)

return YES;

else  return NO;

}

-(void)CompareSpeedWithOther:(Dog *)dog  {

return _speed - dog->_speed;

}

@end

int main() {

@autoreleasepool  {

//创建两条狗

Dog *d1 = [Dog new];

d1->_speed = 80;

d1->_weight = 20;

d1->_sex = kSexYao;

d1->_color = kColorHua;

[d1 bark];

[d1 eat:@"一块沾有粑粑的玉米"];

[d1 eat:@"一块沾有粑粑的红薯"];

[d1 bark];

Dog *d2 = [Dog new];

d2->_speed = 30;

d2->_weight = 50;

d2->_sex = kSexGong;

d2->_color = kColorBlack;

[d2 bark];

[d2 eat:@"一块沾有粑粑的玉米"];

[d2 eat:@"一块沾有粑粑的红薯"];

[d2 bark];

//1 相同    0不同

Bool isSameColor = [d1 isCompareColorWithOther:d2];

NSLog(@"isSameColor=%d",isSameColor);

//比较狗的速度差

int cha = [d1 CompareSpeedWithOther:d2];

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

}

return 0;

}

时间: 2024-10-06 21:06:05

OC-对象和方法的练习的相关文章

黑马程序员 oc对象的方法成员变量

#import <Foundation/Foundation.h> typedef enum { SexMan, SexWoman } Sex; @interface Person : NSObject { /* 成员变量名前用下划线有3个用处 1>方便程序员之间的交流,一看到下划线就知道这个事成员变量 2>为了与getter方法中的方法名区分开 3>不与局部变量名重合 */ int _age; Sex _sex; } // 设置setter和getter方法 // 为了数据

个人总结诀窍----oc中对象作为方法连续,重点也是难点.

相信有不少初学者,oc中的对象作为方法连续传递在一两个对象的时候可能还好,多了可能就绕晕了...我接下来就分享一下我个人对这一块的知识的总结或心得或诀窍吧. 我觉得用"螳螂捕蝉黄雀在后"比较形象,关键点就一环套一环,怎么去打比方还是看个人理解了... 举个例子:一个顾客要去一家餐馆吃饭,餐馆有厨师,厨师有食材.以上有对象分别为:顾客,餐馆,厨师,食材; 一.先来理解这2段关于顾客的代码. #import <Foundation/Foundation.h> #import &

黑马程序员-OC学习日记-对象与方法、对象与函数

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.NSString类简介 1.NSString是OC中用来表示字符串的一个类 2.NSString类创建 (1)通过字面量方式创建 NSString * str = @"要努力学习!"; (2)通过对象方法创建 NSString * str1 = [NSString alloc]; str1 = [str1 initWithUTF8String:"今天雾霾好大!"

李洪强iOS开发之OC[018]对象和方法之间的关系

// //  main.m //  18 - 对象和方法之间的关系 // //  Created by vic fan on 16/7/14. //  Copyright © 2016年 李洪强. All rights reserved. // /** * OC有参有返回值的方法 有参有返回值方法的声明 - (int)sum:(int)x andY:(int)y; - (int)sum:(int)x andY:(int)y{ return x+y; 关系: 1 对象作为方法的参数; 显示人的信息

黑马程序员---OC基础2【对象储存】【函数和方法的区别】【方法和对象关系】【对象作为方法参数】【NSString类介绍】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [对象储存] 1.对象的储存细节 [Car  new] new做了3件事 1)向计算机申请存储空间 2)给类中的每一个成员初始化值 3)返回新申请的空间的首地址 (1).申请的空间在内存的哪个区? new 的时候申请的空间内存的堆区(程序动态分配的内存空间) 当new内存的布局: 初始化的时候: 如果实例变量是基本数据类型,此时给初始为0, 如果是字符串类型此时初始化为null (2).实例变

你是否真的了解OC对象相等?

你是否真的了解OC对象相等? 比较两个对象是否相等是一个常用的功能.==操作符比较的不是对象,而是两个指针本身,一般来说这不是咱们所想要的.要想判断对象是否相等,应该使用 NSObject 协议中声明的isEqual:方法来判断.一般来说,两个类型不同的对象总是不相等的. 如果你已经有过一些 OC 的编码经验的话,你一定自定义过isEqual:方法.那么你是碰到过一些奇葩的问题呢?咱们先来看一段代码: @interface Person : NSObject <NSCopying> @prop

Objective-C 笔记二 类、对象和方法

对象就是一个物件.面向对象的程序设计可以看成一个物件和你想对它做的事情.这与C语言不同,C语言通常称为过程性语言.在C语言中,通常是先考虑要做什么,然后才关注对象,这几乎总是与面相对象的思考过程相反. 在面向对象的用语中,(这里我们以汽车作为对象)你的汽车是汽车的一个实例.car就是类的名称,这个实例就是从该类创建的.因此,每制造一辆新汽车,就会创建汽车类的一个新实例,而且汽车的每个实例都称为一个对象. 对象 使用对象执行的操作 你的汽车 驾驶 加油 洗车 维修 每个实例或对象不仅包含从制造商那

iOS修炼之道:objective-c 类、对象和方法 1

1.类,对象和方法的概念 类是对象的独特表现,每个对象包含各自的私有信息,方法是改变和提供访问的这些数据的手段. 因此,objective-c 采用特定的语法对类和实例应用方法: [classOrInstance method]; 或者理解为消息的传递和接受 [receiver message]; 实例如下: 1 myCar = [[Car new] init]; 2 [myCar dive]; 详细描述关于一个处理分数Objective-c类 代码如下: 1 // 2 // main.m 3

OC 的核心方法总结

核心语法 一. 点语法 p.age不是访问的成员变量,而这就是oc中的点语法,点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开相应的方法.切记点语法的本质是转换成相应的set和get方法. (在OC中访问成员变量的方法只有一种,"->"作为访问成员变量的方法) 点语法使用注意: a)    Self.age= age; return self.age;这两种情况下会引发死循环! b)   如果没有set和get方法,则不能使用点语法. 二. 成员变量

Objective-C之成魔之路【3-类、对象和方法】

重开发者的劳动成果,请勿转载 面向对象程序设计的一些关键概念,主要关注Objective-C定义类相关的语法. OC面向对象方面的概念和其它语言差不多.相比其他语言更接近C++. 对象就是一个物件.面向对象的程序设计可以看成一个物件和你想对它做的事情. 对象(名词)----实现(动词),先定义类(Class),再定义方法(Method). C语言是典型的面向过程性语言. 在C语言中,通常是先考虑要实现什么,然后才关注对象,这几乎总是与面向对象的思考过程相反. 实现(动词)----对象(名词),先