/*

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->_name=@"wang";

        ss2->_name=@"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->_birthday=@"1993.12.31";

        ss1->_year=22;

        ss1->_height=1.81;

        ss1->_sex=@"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;

}

*/

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

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

  1. Python中的私有属性私有方法、类属性类方法以及单例设计模式

    私有属性是对象不希望公开的属性,私有方法是对象不希望公开的方法.在定义私有属性和私有方法时,在属性或者方法前,加上__(两个下划线) 公有方法可以通过对象名直接调用,私有方法不能通过对象名直接调用,只 ...

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

    类属性与方法 类的私有属性 __private_attrs: 两个下划线开头,表明为私有,外部不可用,内部使用时self.__private_attrs. 类的方法 在类的内部,使用 def 关键字来 ...

  3. Python属性、方法和类管理系列之----描述符类

    什么是描述符类? 根据鸭子模型理论,只要具有__get__方法的类就是描述符类. 如果一个类中具有__get__和__set__两个方法,那么就是数据描述符,. 如果一个类中只有__get__方法,那 ...

  4. Python属性、方法和类管理系列之----属性初探

    在学习dict的时候,肯定听过dict是Python中最重要的数据类型,但是不一定知道为什么.马上你就会明白原因了. Python中从模块.到函数.到类.到元类,其实主要管理方法就是靠一个一个的字典. ...

  5. MSIL实用指南-给字段、属性、方法、类、程序集加Attribute

    C#编程中可以给字段.方法.类以及程序集加特性即继承于Attribute的类.这里讲解怎么在IL中给它们加上特性. 生成字段的对应的类是FieldBuilder,生成属性的对应的类是PropertyB ...

  6. Python属性、方法和类管理系列之----__slots__属性

    一句话说明 __slots__是用来限制实例的属性的,__slots__可以规定实例是否应该有__dict__属性:__slots__不能限制类的属性. 只有__slots__列表内的这些变量名可赋值 ...

  7. Python属性、方法和类管理系列之----元类

    元类的介绍 请看位于下面网址的一篇文章,写的相当好. http://blog.jobbole.com/21351/ 实例补充 class Meta(type): def __new__(meta, c ...

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

    [.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...

  9. C#类的成员(字段、属性、方法)

    前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态成员(static)和非静态成员 b.静态成员用static标识,不标识 ...

随机推荐

  1. unigui多页签UI框架

    procedure TMainForm.openForm(Caption, FormClassName: string);var i: integer; sheet: TUniTabSheet;beg ...

  2. 阿里巴巴笔试整理系列 Session2 高级篇

    阿里一面:1. 入场就是红黑树,B数2. apache和nginx源码看过多少,平时看过什么技术论坛,还有没有看过更多的开源代码3. pthread 到自旋锁4. hadoop源码看过没5. 为什么选 ...

  3. C++学习笔记(一):头文件和源文件

    说明: 当一个源文件(a.cpp)要调用另一个源文件(b.cpp)定义的方法时,需要在a.cpp中写上这个方法的声明(只需要该方法的名称.返回值和参数,类似Java的接口): 如果每次调用其他文件的方 ...

  4. Stage3D学习笔记(三):使用GPU绘制一个图片

    首先准备我们需要的图片,尺寸必须是2的幂数,我修改了一下Starling的图标拿来用: 还是先看看最终效果: 代码是居于上一节的代码进行修改的: package { import com.adobe. ...

  5. C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类

    类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. //单继承的定义 class B:public A { ...

  6. wavecom短信猫常用AT命令

    wavecom短信猫常用AT命令 一.一般命令 1. AT+CGMI 给出模块厂商的标识. 2. AT+CGMM 获得模块标识.这个命令用来得到支持的频带 (GSM 900,DCS 1800 或PCS ...

  7. 【Cocos2d-X开发学习笔记】第09期:渲染框架之菜单类(CCMenu)的使用

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010    一.菜单项(CCMenuItem) 菜单项 ...

  8. mysql 开启记录慢查询记录

    以下操作,基于 mysql 5.5.31 版本源码安装配置. 修改 /etc/my.cnf 中 [mysqld] 中添加如下行 # 5.3 一下的配置 log-slow-queries=/var/lo ...

  9. linux 常用命令 -- 系统管理工具包: 监视邮件的使用情况

    清单 5. 获得磁盘使用情况统计信息 $ du -sk * 20 admin 1020 appleby 45828 applicants 13264 buy 11704 dev 11200 finan ...

  10. git 回退和删除操作

    今天不小心把分支的commit提交到master上了.衰 主要通过下面几个命令解决了,很简单记录一下. git reset –hard  回退到某一个版本git push origin :xxxx  ...