您的位置:首页 > 其它

OC多文件开发简单例子实现(重点:self在对象方法中调用其他对象方法的3种方法)

2015-08-18 23:31 741 查看
/*
2.设计一个”学生“类
1> 属性
* 姓名
* 生日
* 年龄
* 身高(单位是m)
* 体重(单位是kg)
* 性别
* C语言成绩
* OC成绩
* iOS成绩
2> 行为
* 跑步:每跑步一次,身高增加1cm,体重减小0.5kg,输出跑完后的体重
* 吃饭:每吃一次,身高增加1cm,体重增加0.5kg,输出吃完后的体重
* 学习:每学习一次,3可成绩各加1分,输出学习完后的3科成绩
* 睡觉:输出所有的属性

* 计算总分:算出3科成绩的总分并显示
* 计算平均分:算出3科成绩的平均分并显示
*/

#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[])
{
@autoreleasepool
{
Student* s1 = [Student new];
s1->_name = @"老王";
s1->_age = 25;
s1->_gender = male;
s1->_height = 1.88;
s1->_myDate =(myDate) {1990,11,11};//强转!
s1->_score = (Score){80.88,90.99,97.98};
s1->_weight = 80;
[s1 eat];
[s1 run];
[s1 study];
[s1 sleep];
float totalS2 = [s1 totalScoreOf];//记得加 s1->
NSLog(@"老王总成绩为%.2f",totalS2);
//        float avgS2 = [s1 avgScoreOf:s1];
float avgS2 = [s1 avgScoreOf];
NSLog(@"老王平均成绩为%.2f",avgS2);
NSLog(@"Be Better!");
}
return 0;
}
//
//  Student.h
//
//  Created by LongMa on 15/8/18.
//  Copyright (c) 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef enum{male,female}Gender;
typedef struct
{
int year;
int month;
int day;
}myDate;
typedef struct{
float cScore;
float OCScore;
float iOSScore;
}Score;
@interface Student : NSObject
{
@public
NSString* _name;
myDate _myDate;
int _age;
float _height;
float  _weight;
Gender _gender;
Score _score;
}
- (void)eat;
- (void)run;
- (void)study;
- (void)sleep;
- (float)totalScoreOf;
//- (float)avgScoreOf:(Student*)p;//传对象才能调用上面的 totalScoreOf
- (float)avgScoreOf;//不传参数的话,要调用自己的方法的话,必须用 self调用!见 .m文件最后的实现方法

@end
//
//  Student.m
//
//  Created by LongMa on 15/8/18.
//  Copyright (c) 2015年 itcast. All rights reserved.
//

#import "Student.h"

@implementation Student

- (void)eat
{
_height += 0.01f;
_weight += 0.5f;
NSLog(@"吃完后体重为%.2f",_weight);
}
- (void)run
{
_height += 0.01f;
_weight -= 0.5f;
NSLog(@"跑步后体重为%.2f",_weight);
}
- (void)study
{
_score.cScore += 1;
_score.OC
4000
Score += 1;
_score.iOSScore += 1;
NSLog(@"学习后,c成绩为%.2f,OC成绩为%.2f,iOS成绩为%.2f",_score.cScore,_score.OCScore,_score.iOSScore);

}
- (void)sleep
{
NSLog(@"%@,%@,他的生日为%i年%i月%i日,今年%d岁了。身高%.2fm,体重%.2fkg。",_name,_gender == male ? @"男" : @"女",
_myDate.year,_myDate.month,_myDate.day,_age,_height,_weight);
NSLog(@"他的c语言成绩为%.2f,OC成绩为%.2f,iOS成绩为%.2f",_score.cScore,_score.OCScore,_score.iOSScore);
}
- (float)totalScoreOf
{
return _score.cScore + _score.OCScore + _score.iOSScore;
}
//- (float)avgScoreOf:(Student*)p//法1:传对象
//{
//  float totalS1 = score.cScore + score.OCScore + score.iOSScore;
//    float totalS1 = [ p totalScoreOf];
//    return (totalS1 ) / 3;
//}
- (float)avgScoreOf
{
Student* s2 = [Student new];//法2:新建对象
return [s2 totalScoreOf];
//    return [self totalScoreOf];//法3:不想传递对象的话,就用self
}
@end
<img src="webkit-fake-url://fd9f1be3-5acf-40d1-a348-60f73a2e422e/image.tiff" alt="" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: