黑马程序员技术交流社区

标题: 作业不会啦。我相信你也会有这个疑问 [打印本页]

作者: 学以致用表初衷    时间: 2016-1-22 14:00
标题: 作业不会啦。我相信你也会有这个疑问
设计一个”学生“类
1> 属性
* 姓名
* 生日
这个题 我想用对象作为方法的参数。
  1. #import <Foundation/Foundation.h>
  2. //人物的声明
  3. @interface person:NSObject
  4. {@public
  5.     NSString *_name;
  6.     int age;
  7.    
  8. }

  9. @end
  10. //人物的实现
  11. @implementation person

  12. @end
  13. //生日的声明

  14. @interface Student : NSObject

  15. {
  16. @public

  17.     NSString *year;

  18.     NSString *month;
  19.     NSString *day;
  20. }
  21. //生日的实现方法
  22. -(void)meide:(Student *)mi;
  23. @end

  24. @implementation Student

  25. -(void)meide:(Student *)mi{
  26.     NSLog(@"%@的%d生日为%d-%d-%d",mi->year,mi->month,mi->day);
  27.     //这里是我输出的东西。但是我不知道应该用什么来表示出这个人的名字。
  28.     //而且现在输出是有结果的。但是明显这个东西是错的。

  29. }
  30. @end



  31. int main(int argc, const char * argv[]) {
  32.     @autoreleasepool {
  33.       //声明一个名字的地址指针
  34.         person *p= [person new];
  35.         //给变量赋值
  36.         p->_name=@"胡大爷";
  37.         p->age=13;
  38.         //声明一个生日的地址指针
  39.         Student *s=[Student new];
  40.         s->year=@"1992";
  41.         s->month=@"31";
  42.         s->day=@"13";
  43.         //
  44.         [s meide:p];
  45.          return 0;
  46.         
  47. }
  48. }
复制代码

屏幕快照 2016-01-22 下午1.56.33.png (174.65 KB, 下载次数: 43)

屏幕快照 2016-01-22 下午1.56.33.png

作者: 学以致用表初衷    时间: 2016-1-22 14:01

那个图好模糊
我看看这个

屏幕快照 2016-01-22 下午2.00.56.png (127.76 KB, 下载次数: 41)

屏幕快照 2016-01-22 下午2.00.56.png

作者: 世年单    时间: 2016-1-22 16:11
那个教学视频里没么??
作者: 学以致用表初衷    时间: 2016-1-22 16:49
世年单 发表于 2016-1-22 16:11
那个教学视频里没么??

视频里 只是让拿结构体做。
我想换个思路。
作者: 世年单    时间: 2016-1-22 18:09
你是哪个校区的??
作者: 学以致用表初衷    时间: 2016-1-22 23:53
没人会吗
作者: 石门一梦    时间: 2016-1-23 15:15
                    
作者: suihaixia54    时间: 2016-1-23 21:11
还是没把概念弄清
作者: 学以致用表初衷    时间: 2016-1-23 21:16
suihaixia54 发表于 2016-1-23 21:11
还是没把概念弄清

那应该哪里改正啊。
作者: 水丹青    时间: 2016-1-23 21:17
结构体 别的整不了
作者: 学以致用表初衷    时间: 2016-1-23 21:19
水丹青 发表于 2016-1-23 21:17
结构体 别的整不了

不是吧 我感觉这个和那个人物开枪射击 是一个理念的啊。
作者: sunshine429    时间: 2016-1-25 16:03
还没学到,帮顶

作者: chensc    时间: 2016-1-25 20:34
学习学习!
作者: 陈旧    时间: 2016-1-25 21:33
今天刚学了  已经明白  
作者: 石门一梦    时间: 2016-1-26 10:27
加油!!                
作者: toveyloves    时间: 2016-1-26 11:27
你这是想使用父类的实例属性name,所以你必须要有继承的关系,你的学生类继承了NSObject类了,继承Person可以了,这样就可以访问父类的实例变量
另外再声明实例变量的时候 所有的变量名一般以下划线开头 一般都这样写 例如NSString *_name; int _age;
作者: 学以致用表初衷    时间: 2016-1-26 12:15
toveyloves 发表于 2016-1-26 11:27
你这是想使用父类的实例属性name,所以你必须要有继承的关系,你的学生类继承了NSObject类了,继承Person可以 ...

谢谢 我明白啦。~~
声明实例变量现在也知道了。
作者: Chen_Mx    时间: 2016-1-26 21:06
还没有学到。 。
作者: chensc    时间: 2016-1-27 20:26
学习学习!
作者: a527512132    时间: 2016-1-28 23:39

十年前我们可以对青春说不后悔,十年后我们的青春已不在回来。


作者: a527512132    时间: 2016-1-28 23:41

十年前我们可以对青春说不后悔,十年后我们的青春已不在回来。


作者: chensc    时间: 2016-1-31 10:56
学习学习!
作者: 一枚小刁民    时间: 2016-2-1 17:13
首先,你的%@占位符输出的什么没写出来,第二,你的student类应该继承Person类
作者: chensc    时间: 2016-2-2 20:47
学习学习!
作者: chensc    时间: 2016-2-3 20:50
学习学习!
作者: 847374032    时间: 2016-2-4 20:40
再看一下视频试试
作者: u37kl    时间: 2016-2-7 14:25
NSLog函数中的格式符和后面的参数的个数不匹配,并且输出字符串数据不能用%d,使用%@或%s
作者: chensc    时间: 2016-2-15 20:10
学习学习!
作者: chensc    时间: 2016-2-17 20:03
学习学习!
作者: 一个疯子    时间: 2016-2-19 19:01
如果楼主要采用结构题,建议采用这种形式。将Person的属性全部放到.m中,采用方法的形式给属性赋值,如果将属性放到.h中暴露出去,不安全!

#import <Foundation/Foundation.h>

typedef struct {
    int year;
    int mouth;
    int day;
}Birthday;

typedef enum {
    MAN,
    WOMAN,
}SEX;

@interface CDPersons : NSObject

- (void)talk:(NSString*)words;
- (void)smile;
- (void)printMe;
- (void)initName:(NSString*)name;
- (void)initBirWithYear:(int)year Mouth:(int)mouth Day:(int)day;
- (void)initSex:(SEX)sex;

@end

#import "CDPersons.h"
@interface CDPersons()
@property(nonatomic,copy)NSString* name;
@property(nonatomic,assign)Birthday birthday;
@property(nonatomic,assign)SEX sex;
@end

@implementation CDPersons
- (void)talk:(NSString*)words{
    NSLog(@"%@说%@",self.name,words);
}
- (void)smile{
    NSLog(@"%@笑了",self.name);
}
- (void)printMe{
    NSLog(@"我的名字%@--性别%u---生日%d%d%d",self.name,self.sex,self.birthday.year,self.birthday.mouth,self.birthday.day);
}
- (void)initName:(NSString*)name{
    _name = name;
}
- (void)initBirWithYear:(int)year Mouth:(int)mouth Day:(int)day{
    _birthday.year = year;
    _birthday.mouth = mouth;
    _birthday.day = day;

}
- (void)initSex:(SEX)sex{
    _sex = sex;
}
@end



主函数
   CDPersons* person0 = [[CDPersons alloc]init];
   [person0 initName:@"chendong"];
   [person0 initSex:MAN];
   [person0 initBirWithYear:1993 Mouth:1 Day:10];

   [person0 smile];
   [person0 talk:@"中国人"];
   [person0 printMe];

作者: chuanzhang    时间: 2016-2-19 20:35
顶一下,互相帮助,共同提高
作者: 米阳    时间: 2016-2-19 22:04
设计一个”学生“类
1> 属性
* 姓名
* 生日
这个题 我想用对象作为方法的参数。
//先声明一个学生类
@intface  Student : NSObject
{
NSString *_name;
int _year;
int _mouth;
int _day;
}
//方法的声明
-(void)massage:(NSString *)name  and:(int)year  and:(int)mouth and:(int)day;
@end

@implementation  Student
-(void)ximxi:(NSString *)name  and:(int)year  and:(int)mouth and:(int)day{
NSLog(@"name=%@,生日:%d年%d月%d日",_name,_year,_mouth,_day);
}
@end

//主函数部分
autoreleasepool{
//实例化一个对象
Student *stu=[Student new];
stu->_name=@"胡汉三";
stu->_year=1221;
stu->_mouth=1;
stu->_day=1;
[stu xinxi];
}
不知是否可行
作者: wx_MkPtTU4D    时间: 2016-2-20 00:13
学习学习,学到哪里了  ?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2