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="" />
相关文章推荐
- Swift-字符串
- android.app.Activity 的介绍
- 数据结构学习笔记5-寻找最小的k个数(选择排序和堆排序)
- android.app.Activity 的介绍
- t.gettype().assembly.where(t=>t.basetype==typeof(basetype) isassignablefrom(iinterface)
- android 的屏幕适配
- Swift-循环
- 手机脱离电脑持续抓LOG教程
- Single Number II LeetCode
- jQuery高级技巧——DOM操作篇
- 1260 Tickets【dp】
- postgresql 导数据时无需输入密码设置
- 关于单链表带环的一系列问题
- POJ 1285 - Combinations, Once Again 泛化背包!
- Swift-分支
- 加速stackoverflow.com加载速度
- linux之wait函数
- BRISK: Binary Robust Invariant Scalable Keypoints
- 条件注释判断浏览器<!--[if !IE]><!--[if IE]><!--[if lt IE 6]><!--[if gte IE 6]>
- 088 Merge Sorted Array [Leetcode]