做?个班级信息程序,包含4个?定义的类:OurClass、Teacher、 Student、Person,并实现方法.

  1. #import "Teacher.h"
  2. @interface OurClass : NSObject
  3. @property (nonatomic, retain) Teacher *tea;
  4. @property (nonatomic, retain) NSMutableArray *arr;
  5. @end</span>


  1. #import "OurClass.h"
  2. @implementation OurClass
  3. - (NSString *)description
  4. {
  5. return [NSString stringWithFormat:@"%@",_arr];
  6. }
  7. - (void)dealloc
  8. {
  9. NSLog(@"班级空间释放");
  10. [_tea release];
  11. [_arr release];
  12. [super dealloc];
  13. }
  14. @end
  15. </span>


  1. @interface Person : NSObject
  2. {
  3. NSString *_name;
  4. NSInteger _age;
  5. }
  6. @property (nonatomic, retain) NSString *name;
  7. @property (nonatomic) NSInteger age;
  8. @end</span>
  1. <span style="font-size:18px;">@interface Teacher : Person
  2. - (NSNumber *)exam:(NSString *)course;
  3. @end</span>


  1. <span style="font-size:18px;">@implementation Teacher
  2. - (NSNumber *)exam:(NSString *)course
  3. {
  4. NSNumber *score = [NSNumber numberWithFloat:arc4random() % 101];
  5. return score;
  6. }
  7. - (void)dealloc
  8. {
  9. NSLog(@"老师空间释放");
  10. [_name release];
  11. [super dealloc];
  12. }
  13. @end</span>


  1. <span style="font-size:18px;">@interface Student : Person
  2. @property (nonatomic, retain) NSMutableDictionary *score;
  3. //初始化
  4. - (id)initWithName:(NSString *)name age:(NSInteger)age score:(NSMutableDictionary *)score;
  5. //比较年龄大小
  6. - (NSComparisonResult)compareByAge:(Student *)anStudent;
  7. @end</span>


  1. @implementation Student
  2. - (id)initWithName:(NSString *)name age:(NSInteger)age score:(NSMutableDictionary *)score
  3. {
  4. self = [super init];
  5. if (self) {
  6. self.name = name;
  7. self.age = age;
  8. self.score = score;
  9. }
  10. return self;
  11. }
  12. - (NSComparisonResult)compareByAge:(Student *)anStudent
  13. {
  14. if ([self age] > [anStudent age]) {
  15. return NSOrderedDescending;
  16. }else if([self age] == [anStudent age]){
  17. return NSOrderedSame;
  18. }else {
  19. return NSOrderedAscending;
  20. }
  21. }
  22. - (NSString *)description
  23. {
  24. return [NSString stringWithFormat:@"%@,%ld,%@",_name,_age,_score];
  25. }
  26. - (void)dealloc
  27. {
  28. NSLog(@"*******");
  29. [_name release];
  30. [_score release];
  31. [super dealloc];
  32. }
  33. @end
  34. </span>


  1. #import "Student.h"
  2. #import "OurClass.h"
  3. int main(int argc, const char * argv[])
  4. {
  5. @autoreleasepool {
  6. NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@87,@"yuwen", nil];
  7. NSMutableDictionary *dic2 = [NSMutableDictionary   dictionaryWithObjectsAndKeys:@94,@"yuwen", nil];
  8. NSMutableDictionary *dic3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@76,@"yuwen", nil];
  9. Student *stu1 = [[Student alloc] initWithName:@"xiaoming" age:23 score:dic1];   // 0 -1
  10. Student *stu2 = [[Student alloc] initWithName:@"xiaohong" age:35 score:dic2];  // 0 -1
  11. Student *stu3 = [[Student alloc] initWithName:@"xiaofang" age:17 score:dic3];   //0 - 1
  12. NSMutableArray *stuArr = [[NSMutableArray alloc] initWithObjects:stu1,stu2, nil];    // 0 -1
  13. [stu1 release];
  14. [stu2 release];
  15. OurClass *class = [[OurClass alloc] init];   // 0 - 1
  16. class.arr = stuArr;  // 1 - 2
  17. [stuArr release];// 2 - 1
  18. NSLog(@"%@",class);
  19. //更换老师
  20. Teacher *teacher = [[Teacher alloc] init];  // 0 - 1
  21. class.tea = teacher;   // 1 - 2
  22. [teacher release];     // 2 - 1
  23. //添加学生
  24. [class.arr addObject:stu3];
  25. NSLog(@"%@",class);
  26. [stu3 release];
  27. //移除学生
  28. [class.arr removeObject:stu3];
  29. NSLog(@"%@",class);
  30. //学生年龄比较
  31. NSComparisonResult result = [stu1 compareByAge:stu2];
  32. NSLog(@"%ld",result);
  33. //设置学生成绩
  34. NSNumber *num = [teacher exam:@"yuwen"];
  35. NSLog(@"分数为%@",num);
  36. [class release];
  37. }
  38. return 0;
  39. }
  40. </span>
时间: 2024-11-05 16:06:12

做?个班级信息程序,包含4个?定义的类:OurClass、Teacher、 Student、Person,并实现方法.的相关文章

一个无锁消息队列引发的血案:怎样做一个真正的程序员?(二)——月:自旋锁

前续 一个无锁消息队列引发的血案:怎样做一个真正的程序员?(一)——地:起因 一个无锁消息队列引发的血案:怎样做一个真正的程序员?(二)——月:自旋锁 平行时空 在复制好上面那一行我就先停下来了,算是先占了个位置,虽然我知道大概要怎么写,不过感觉还是很乱. 我突然想到,既然那么纠结,那么混乱,那么不知所措,我们不如换个视角.记得高中时看过的为数不多的长篇小说<穆斯林的葬礼>,作者是:霍达(女),故事描写了两个发生在不同时代.有着不同的内容却又交错扭结的爱情悲剧,一个是“玉”的故事,一个是“月”

做一个“懒惰”的程序员

懒惰,算是本人的一大缺点,但是我发现,事物的两面性在懒惰上得到充分体现.懒惰,并非一无是处. 比如,编写脚本. 本人编写脚本的原因有两个:一是省事,不用每次敲那么多东西.二是本人健忘,无法记得冗长的命令. 就拿IPC的代码来讲, IPC代码根目录中,有N多build-XXX.而每一个build-XXX目录下的内容,则完全相似,都有一个set.sh. 这就是编译用的脚本. 随便拿出一个来,其内容大致如下: cmake .. -DCROSS_COMPILE=arm-hisiv100nptl-linu

黑客与画家——学会做有品位的程序员

上周和几个朋友分享了一下我阅读<黑客与画家>这本书的感悟,留点文字. 首先我配合这本书的作者Paul Graham,堪称硅谷创业者之父,成立的Y Combanator投资基金,也算是一家具有独特风格的seed fund公司. 首先该创业者开创了一种新型的投资方式(二十世界初),开创创业者夏令营,帮着创业者实现自己的想法,和VC面对面沟通,同时展示自己的产品,将产品和市场有效的结合起来.这听起来目前阶段中国的创新工场,算是一个追随者,形式基本一致.朋友笑道:李开复和该作者做大的区别是,没有创过业

【视频编解码&#183;学习笔记】11. 提取SPS信息程序

一.准备工作: 回到之前SimpleH264Analyzer程序,找到SPS信息,并对其做解析 调整项目目录结构: 修改Global.h文件中代码,添加新数据类型UINT16,之前编写的工程中,UINT8和UINT32都为小写表示,为了更符合编程规范,将其改为全大写(可使用ctrl+H在整个解决方案内进行替换). typedef unsigned char UINT8; typedef unsigned short UINT16; typedef unsigned int UINT32; 之后编

做一个懒COCOS2D-X程序猿(一)停止手打所有cpp文件到android.mk

前言:"懒"在这里当然不是贬义词,而是追求高效,拒绝重复劳动的代名词!做一个懒COCOS2D-X程序猿的系列文章将教会大家在工作中如何偷懒,文章篇幅大多较短,有的甚至只是几行代码,争取把懒发挥到极致! 一.懒人说书 Android.mk中LOCAL_SRC_FILES需要罗列出所有参与编译的文件,这样在.cpp文件少的时候还可以一个一个添加,当有几百个文件的时候会十分的痛苦! 我们下看看TestCpp工程中的Android.mk文件: 这只是节选的一部分,大概只有50个左右吧,除数量多

做一个“合格”的程序员

其实这篇文章很早就想写了,一直忙的没有时间,今天总算得空,下面就针对程序员这个职业来说一说我个人的一些想法: 要想做一个在我认为是"合格"的程序员,那么应该要做到以下几点: 代码规范,注释清楚 要做一个好的程序员,代码的质量是最重要的,代码是项目过程中最为重要的资源,有很多程序员觉得写注释太麻烦,还会花太多时间,尤其是很多规模比较小的公司,更不会注重这一点,但是往往到了项目后期,乃至项目由他人接手后,维护的成本会变得非常高,代码阅读困难,注释不详细甚至没有,维护人员需要靠自己去猜测某个

如何做一个开心的程序员?

经常有人发帖讨论「怎么做一个成功的程序员」,「如何才能成为一个优秀的程序员」,我并不太同意这些文章中的看法,想在这里我想提出一些我对于程序员这个职业自己的想法. 和标题中写的一样,我的目标不是成为一个优秀或者成功的程序员,我想成为一个开心的程序员.因为程序员是一个工作和生活密不可分的职业只有成为一个开心的程序员,才能过着开心的生活. 我相信那些想让自己或者别人成为优秀的程序员的人的最终目的也是能过上更开心的生活:少一点烦恼,多一点自由做自己想做的事情. 可能大家会不太同意我对开心的生活的定义,这

做一个合格的程序猿之浅析Spring AOP源码(十五) 分析JdkDynamicAopProxy的invoke方法

上一节我们已经分析了Proxyfactorybean如何去生成一个目标对象的代理的,这一节我们将浅析一下基于JDK动态代理的核心回调方法invoke的源代码: 首先先打开JdkDynamicAopProxy.java 如下 JdkDynamicAopProxy.java文件是实现了AopProxy和InvocationHandler这2个接口的 先讲AopProxy这个接口,如图所示,AopProxy接口就定义了2个方法 我们再看这个接口的继承关系 好了,作为原生的基于JDK的动态代理的JdkD

11月10日下午 ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情

1.用ajax做弹窗显示信息详情 nation.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <me