牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有同学学到这个题目感觉太长不愿敲代码,copy走我的即可~不过还是建议自己打一打

/*

3.设计一个”学生“类

1> 属性

* 姓名

* 生日

* 年龄

* 身高(单位是m)

* 体重(单位是kg)

* 性别

* C语言成绩

* OC成绩

* iOS成绩

2> 行为

* 跑步:每跑步一次,身高增加1cm,体重减小0.5kg,输出跑完后的体重

* 吃饭:每吃一次,身高增加1cm,体重增加0.5kg,输出吃完后的体重

* 学习:每学习一次,3可成绩各加1分,输出学习完后的3科成绩

* 睡觉:输出所有的属性

* 比较C语言成绩:跟另外一个学生比较C语言成绩,返回成绩差(自己的成绩 - 其他人的成绩)

* 比较OC成绩:跟另外一个学生比较OC语言成绩,返回成绩差(自己的成绩 - 其他人的成绩)

* 比较iOS成绩:跟另外一个学生比较iOS语言成绩,返回成绩差(自己的成绩 - 其他人的成绩)

* 计算总分:算出3科成绩的总分

* 计算平均分:算出3科成绩的平均分

*/

/*

#import <Foundation/Foundation.h>

@interface Student : NSObject

{

//每次在类的属性声明的时候都要提那么几句:要加@public,要在字符串类型的属性声明的时候声明成字符串指针变量类型

@public

NSString *_name;

NSString *_birthday;

int _year;

float _height;

float _weight;

NSString *_sex;

int _scoreC;

int _scoreOC;

int _scoreiOS;

}

-(void)run;

-(void)eat;

-(void)study;

-(void)sleep;

-(int)gradeC:(int)score1 andgradeC:(int)score2;

-(int)gradeOC:(int)score2;

-(int)gradeiOS:(int)score2;

-(int)sumScore;

-(int)averScore:(int)sum;

@end

@implementation Student

-(void)run

{

_weight-=0.5;

NSLog(@"跑步,瘦了0.5kg,体重变为%.2f",_weight);

}

-(void)eat

{

_weight+=0.5;

NSLog(@"吃饭,胖了0.5kg,体重变为%.2f",_weight);

}

-(void)study

{

_scoreC+=1;

_scoreOC+=1;

_scoreiOS+=1;

NSLog(@"C:%d,OC:%d,iOS:%d",_scoreC,_scoreOC,_scoreiOS);

}

-(void)sleep

{

NSLog(@"Name:%@\nBirthday:%@\nYear:%d\nHeight:%.2f\nWeight:%.2f\nSex:%@\nCScore:%d\nOCScore:%d\niOSScore:%d",_name,_birthday,_year,_height,_weight,_sex,_scoreC,_scoreOC,_scoreiOS);

}

-(int)gradeC:(int)score1 andgradeC:(int)score2  //这个方法是传入两个人的数据,然后计算,我觉得这个方法不足之处在于我们明明用第一个人去调用这个方法,那么只需要传第二个人的成绩不就得了,我们明明可以在方法里直接引用调用这个方法的那个人的成绩。改进的方法便是下面两个关于OC和iOS的方法

{

int score3=score1-score2;

return score3;

}

-(int)gradeOC:(int)score2  //这个方法和下面的iOS的方法就只需要传入一个值,然后在方法里直接引用调用这个方法的对象的相关属性(成员)和传入的这一个值比较即可了,比较简便

{

int score3=_scoreOC-score2;

return score3;

}

-(int)gradeiOS:(int)score2

{

int score3=_scoreiOS-score2;

return score3;

}

-(int)sumScore

{

int sum;

sum=_scoreC+_scoreOC+_scoreiOS;

return sum;

}

-(int)averScore:(int)sum

{

int average=sum/3;

return average;

}

@end

int main()

{

@autoreleasepool {

Student *ss1=[Student new];

Student *ss2=[Student new];

ss1->[email protected]"wang";

ss2->[email protected]"lao";

ss1->_weight=55.5;

ss2->_weight=65.5;

[ss1 run];  //第一个实例化对象ss1去调用run方法

[ss2 eat];  //第二个实例化对象ss2去调用eat方法

//运算嘛,所以赋值是一定要的,很麻烦,习惯就好了

ss1->_scoreC=85;

ss2->_scoreC=90;

ss1->_scoreOC=90;

ss2->_scoreOC=75;

ss1->_scoreiOS=80;

ss2->_scoreiOS=100;

ss1->[email protected]"1993.12.31";

ss1->_year=22;

ss1->_height=1.81;

ss1->[email protected]"man";

[ss1 study];  //因为这个方法会使所有成绩加1,所以以后的运算都是在成绩加1的情况的运算的。

[ss1 sleep];

int scoreCcha=[ss1 gradeC:ss1->_scoreC andgradeC:ss2->_scoreC];

NSLog(@"%@的C语言成绩减去%@的C语言成绩的差为:%d",ss1->_name,ss2->_name,scoreCcha);

int scoreOCcha=[ss1 gradeOC:ss2->_scoreOC];

NSLog(@"%@的OC语言成绩减去%@的OC语言成绩的差为:%d",ss1->_name,ss2->_name,scoreOCcha);

int scoreiOScha=[ss1 gradeiOS:ss2->_scoreiOS];

NSLog(@"%@的iOS成绩减去%@的iOS成绩的差为:%d",ss1->_name,ss2->_name,scoreiOScha);

int sum=[ss1 sumScore];

NSLog(@"%@的总成绩为:%d",ss1->_name,sum);

int average=[ss1 averScore:[ss1 sumScore]];  //这里是直接调用前面方法的返回值,类型保持一致即可

NSLog(@"%@的平均成绩为:%d",ss1->_name,average);

}

return 0;

}

*/

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

时间: 2024-11-11 00:55:22

牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有同学学到这个题目感觉太长不愿敲代码,copy走我的即可~不过还是建议自己打一打的相关文章

Python的实例定属性和方法或类绑定方法

一.给实例对象绑定属性和方法:1.给实例绑定属性:先定义一个Student类 #!/usr/bin/python class Student(object): pass 然后绑定属性: s = Student() s.name = 'AAA' # 动态给实例绑定一个属性 print(s.name)#输出AAA 2.给实例绑定方法:先定义一个方法 def add(self,a,b): self.a = a self.b = b return self.a +self.b 然后绑定方法: Metho

用原生dom的方法获取class对象(很简单实用)

话不多说,直接上代码,用的是for(var i in array) 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>用原生dom的方法获取class对象(很简单实用)</title> 6 <style> 7 .ca{background:red;padding:20px;} 8 .js{border:1px so

python干货-类属性和方法,类的方法重写

类属性与方法 类的私有属性 __private_attrs: 两个下划线开头,表明为私有,外部不可用,内部使用时self.__private_attrs. 类的方法 在类的内部,使用 def 关键字来定义一个方法,类方法必须包含参数 self,且为第一个参数.self的名称也可自己取,如使用this,但是建议还是用self为好. 类的私有方法 __private_method: 两个下划线开头,为私有方法,只能在类的内部调用 ,不能在类的外部调用.self.__private_methods.

关于对象、类、属性和方法的理解

文章开头申明:半路出家的野路子,可能个人理解有所欠缺,希望不吝赐教. 在初步学习java的过程中,往往都是绕不开面向对象的思想,说到对象或许挺多初学者和我一样只是听说过一个"万物皆对象"的说法,简单的记下对象包含属性和方法,然而实际使用的过程中往往有忽略这些东西,也就是犯浑了.个人的理解是希望将对象.类.属性和方法用一个例子来简单说明. 打个比方说我到商场买手机这个例子吧.我到了商场买手机,第一步自然就是向售货员提出我的要求:如手机大小.CPU.内存等等(属性),要求能拍照打电话首发短

[.net 面向对象编程基础] (9) 类的成员(字段、属性、方法)

[.net 面向对象编程基础] (9) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态成员(static)和非静态成员 b.静态成员用static标识,不标识则默认为非静态成员 c.静态成员属于类所有,动态成员则属于实例所有,即对象 d.静态成员为类所有实例共享,无论类有多少实例或副本,静态成员只占用存中一块区域.非静态成员则在类的每个实例,都创建一个内存域. 下面主要说明一下类的主要

为什么Nhibernate中属性和方法必须Virtual的

如果你曾经用过NHibernate 2.0或者更高的版本,那您一定碰到过下面的错误:NHibernate.InvalidProxyTypeException: The following types may not be used as proxies: NHibernateExamples.Entities.OrderLine: method get_UnitPrice should be 'public/protected virtual' or 'protected internal vi

python3 类的属性、方法、封装、继承及小实例

Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法. 对象可以包含任意数量和类型的数据. python类与c++类相似,提供了类的封装,继承.多继承,构造函数.析构函数. 在python3中,所有类最顶层父类都是object类,与java类似,如果定义类的时候没有写出父类,则object类就是其直接父类. 类定义 类定义语法格式如下: class ClassName:    <statem

Objective-C语言介绍 、 Objc与C语言 、 面向对象编程 、 类和对象 、 属性和方法 、 属性和实例变量

Objective-C语言介绍 . Objc与C语言 . 面向对象编程 . 类和对象 . 属性和方法 . 属性和实例变量 1 第一个OC控制台程序 1.1 问题 Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X,iOS的应用程序.其运行于苹果公司的Mac操作系统下. 本案例要求使用集成开发工具Xcode编写OC的HelloWorld程序,在Xcode的控制台中, 1.2 方案 首先,启动集成开发工具Xcode. 然后,创建OC语言的工程. 最后,运行所创建的工

JS的Object类的属性、方法及如何创建对象

属性 constructor:对创建对象的函数的引用(指针).对于Object类,该指针指向原始的object()函数. prototype:对该对象的对象原型的引用.对于所有的类,它默认返回Object对象的一个实例. 方法 hasOwnProperty(property):判断对象是否有某个特定的属性.必须用字符串指定该属性(例如,o.hasOwnProperty(”name”)). isPrototypeOf(object):判断该对象是否为另一个对象的原型. propertyIsEnum