/*
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;
}
*/
版权声明:本文为博主原创文章,未经博主允许不得转载。