牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有同学学到这个题目感觉太长不愿敲代码,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->_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走我的即可~不过还是建议自己打一打的更多相关文章
- Python中的私有属性私有方法、类属性类方法以及单例设计模式
		
私有属性是对象不希望公开的属性,私有方法是对象不希望公开的方法.在定义私有属性和私有方法时,在属性或者方法前,加上__(两个下划线) 公有方法可以通过对象名直接调用,私有方法不能通过对象名直接调用,只 ...
 - python干货-类属性和方法,类的方法重写
		
类属性与方法 类的私有属性 __private_attrs: 两个下划线开头,表明为私有,外部不可用,内部使用时self.__private_attrs. 类的方法 在类的内部,使用 def 关键字来 ...
 - Python属性、方法和类管理系列之----描述符类
		
什么是描述符类? 根据鸭子模型理论,只要具有__get__方法的类就是描述符类. 如果一个类中具有__get__和__set__两个方法,那么就是数据描述符,. 如果一个类中只有__get__方法,那 ...
 - Python属性、方法和类管理系列之----属性初探
		
在学习dict的时候,肯定听过dict是Python中最重要的数据类型,但是不一定知道为什么.马上你就会明白原因了. Python中从模块.到函数.到类.到元类,其实主要管理方法就是靠一个一个的字典. ...
 - MSIL实用指南-给字段、属性、方法、类、程序集加Attribute
		
C#编程中可以给字段.方法.类以及程序集加特性即继承于Attribute的类.这里讲解怎么在IL中给它们加上特性. 生成字段的对应的类是FieldBuilder,生成属性的对应的类是PropertyB ...
 - Python属性、方法和类管理系列之----__slots__属性
		
一句话说明 __slots__是用来限制实例的属性的,__slots__可以规定实例是否应该有__dict__属性:__slots__不能限制类的属性. 只有__slots__列表内的这些变量名可赋值 ...
 - Python属性、方法和类管理系列之----元类
		
元类的介绍 请看位于下面网址的一篇文章,写的相当好. http://blog.jobbole.com/21351/ 实例补充 class Meta(type): def __new__(meta, c ...
 - [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)
		
[.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...
 - C#类的成员(字段、属性、方法)
		
前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态成员(static)和非静态成员 b.静态成员用static标识,不标识 ...
 
随机推荐
- [C语言 - 13] 运算符
			
算术运算符 运算符的优先级 括号 > 正负 > 数学运算 > 位运算 > 数学对比 > 逻辑对比 > 条件运算 > 赋值运算 A.赋值运算符 复合赋值运算 ...
 - 转载MSDN 在ASP.NET 中执行 URL 重写
			
转载文章原网址 http://msdn.microsoft.com/zh-cn/library/ms972974.aspx 摘要:介绍如何使用 Microsoft ASP.NET 执行动态 URL 重 ...
 - 经验之巧妙的应用Map
			
后台: @RequestMapping("/cmci/v_divide_check_add.do") public String toDivideCheckAdd(HttpS ...
 - 去ECSHOP版权,去官方后门
			
ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店.系统开源但不免费,是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序.目前最新版本为2.7.3 0708版.1.首先 ...
 - Winfrom treeview 如何从多个数据表中获取数据动态生成
			
本文转载:http://www.cnblogs.com/VincentLuo/archive/2008/03/29/1128987.html 在 汪洋怡舟的这篇文章中[http://www.cnblo ...
 - Xcode repository host is unreachable
			
遇到这个错误,首先不要急.按照如下方法即可(如果你的svn地址没有问题的话): url要使用域名,所以映射下 1. 修改host:在应用程序里面打开终端(terminal),输入 sudo vi /e ...
 - 基于新浪sae使用php生成图片发布图文微博
			
1.生成图片的代码: <?php header ("Content-type: image/png"); mb_internal_encoding("UTF-8&q ...
 - [Practical Git] Diagnose which commit broke something with git bisect
			
Sometimes you find a bug in your project that has been around for a while without being noticed; it ...
 - -----------------------------SpringMVC理解-----------------------------
			
1.用户发送请求到前端控制器(DispatcherServlet); 2.前端控制器转发请求到处理器映射器(HandlerMapping): 3.处理器映射器将拦截的Action返回到前端控制器: 4 ...
 - ios webview  图片自适应屏幕宽度
			
//这个知识点主要是自己最近在尝试写后台接口 在移动端展示的时候需要用到这个知识点,在webViewDidFinishLoad方法里面执行一段js代码 拿到各个图片 判断其宽度是否大于当前手机屏幕尺寸 ...