黑马程序员-OC中的类
来源:互联网 发布:mac dock图标不显示 编辑:程序博客网 时间:2024/05/18 08:21
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一.设计类的三个步骤
1.类的名称
2.类的属性
3.类的行为(功能)
类与对象的关系
1.oc中的因相当于图纸,用来描述一类事物,也就是说,要想创建对象,必须先有类
2.oc利用类来创建对象,对象是类的具体存在。
3.因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象。
二.合理设计一个类 类中有类
/*
类名称 学生
成员变量:性别,生日,体重,最喜欢的颜色,狗(
体重,毛色,吃,跑)
方法: 吃,跑步,遛狗(让狗跑),喂狗(让狗吃)
*/
bogon:03oc whome$ touch 10oc.m
bogon:03oc whome$ open 10oc.m
#import <Foundation/Foundation.h>//枚举typedef enum{ SexMan, SexWoman}Sex;//结构typedef struct{ int year; int month; int day;}Date;typedef enum { ColorBlack, ColorRed, ColorGreen}Color;@interface Dog:NSObject{ @public double weight;//体重 Color curColor;//毛色}- (void)eat;- (void)run;@end
@implementation Dog- (void) eat{ //每吃一次,体重就加1 weight += 1; //weight = weight + 1 NSLog(@"吃完这次后的体重是%f",weight);}- (void)run{ weight -= 1; NSLog(@"跑完这次后的体重是%f",weight);}@end
/*
类名称 学生
成员变量:性别,生日,体重,最喜欢的颜色,狗(
体重,毛色,吃,跑)
方法:吃,跑步,遛狗(让狗跑),喂狗(让狗吃)
*/
@interface Student : NSObject{ @public Sex sex;//性别 Date birthday;//生日 double weight;//体重(kg) Color favColor;//最喜欢的颜色 char *name; //重点:狗 Dog *dog;}- (void)eat;- (void)run;- (void)print;-(void)liuDog;-(void)weiDog;@end
@implementation Student- (void)liuDog{ //让狗跑起来(调用狗的run方法) [dog run];}- (void)weiDog{ //让狗吃东西(调用狗的eat方法) [dog eat];}- (void)print{ NSLog(@"性别=%d,喜欢的颜色=%d,姓名=%s,生日=%d-%d-%d",sex,favColor,name,birthday.year,birthday.month,birthday.day);}- (void)eat{ //每吃一次,体重就加1 weight +=1; //weight = weight+1 NSLog(@"学生吃完这次后的体重是%f",weight);}- (void)run{ weight -=1; NSLog(@"学生跑完这次后的体重是%f",weight);}@end
void test();int main(){ Student *s = [Student new]; Dog *d = [Dog new]; d->curColor = ColorGreen; d->weight = 20; s->dog = d; [s liuDog]; [s weiDog]; test(); return 0;}void test(){ Student *s = [Student new]; s->weight = 50; //性别 s->sex = SexMan; //生日 Date d = {2011,9,10}; s->birthday = d; s->name = "Jack"; /* s->birthday.year = 2011; s->birthday.month = 9; s->birthday.day = 10; */ //喜欢的颜色 s->favColor = ColorBlack; /* [s eat]; [s eat]; [s run]; [s run]; */ [s print];}
bogon:03oc whome$ cc 10oc.m -framework
Foundation
bogon:03oc whome$ ./a.out
2014-09-22 05:58:04.188 a.out[576:507] 跑完这
次后的体重是19.000000
2014-09-22 05:58:04.204 a.out[576:507] 吃完这
次后的体重是20.000000
2014-09-22 05:58:04.206 a.out[576:507] 性别=
0,喜欢的颜色=0,姓名=Jack,生日=2011-9-10
bogon:03oc whome$
设计一个计算器类 类方法传参
返回pai 3.14
返回两个数的平方
返回两个数的和
bogon:03oc whome$ touch 11oc.m
bogon:03oc whome$ open 11oc.m
#import <Foundation/Foundation.h>
/*
类名称 计算器
方法:
1>返回 pai
2>计算某个整数的平方
3>计算两个整数的和
*/
@interface JiSuanQi : NSObject//方法名:pi- (double)pi;//OC方法中,一个参数对应一个冒号//方法名叫:pingFang:(冒号也是方法名的一部分)-(int)pingFang:(int)num;//- (int)sum:(int)num1 : (int)num2;//方法名:sumWithNum1:andNum2;- (int)sumWithNum1:(int)num1 andNum2:(int)num2;//- (int)sumWithNum1:(int)num1 andNum2:(int)num2 andNum3:(int)num3;@end
@implementation JiSuanQi- (double)pi{ return 3.14;}- (int)pingFang:(int)num{ return num*num;}//- (int)sum:(int)num1:(int)num2- (int)sumWithNum1:(int)num1 andNum2:(int)num2{ return num1 + num2;}@end
int main(){ JiSuanQi *jsq = [JiSuanQi new]; int a = [jsq sumWithNum1:20 andNum2:5]; //int a = [jsq sum:10 :5]; //int a = [jsq pingFang:10]; //double a = [jsq pi]; NSLog(@"%i",a); return 0;}
bogon:03oc whome$ cc 11oc.m -framework
Foundation
bogon:03oc whome$ ./a.out
2014-09-22 06:42:51.467 a.out[626:507] 25
设计一个类 类比较方法
/*
类名称 车 Car
成员变量:速度 speed
方法: 速度比较
*/
bogon:03oc whome$ touch 12oc.m
bogon:03oc whome$ open 12oc.m
#import <Foundation/Foundation.h>/* 类名称 车 Car 成员变量:速度 speed 方法: 速度比较 */@interface Car : NSObject{ @public int speed;}//速度比较- (int)compareSpeedWithOther:(Car *)other;@end;
@implementation Car- (int)compareSpeedWithOther:(Car *)other{ //speed //other->speed //返回当前这输车和为other这辆车的速度差距 return speed - other->speed;}@end
int main(){ //第一辆车 速度300 Car *c1 = [Car new]; c1->speed = 300; //第二辆车 速度250 Car *c2 = [Car new]; c2->speed = 250; int a = [c1 compareSpeedWithOther:c2]; NSLog(@"a=%d",a); return 0; }
bogon:03oc whome$ cc 12oc.m -framework
Foundation
bogon:03oc whome$ ./a.out
2014-09-22 06:56:29.188 a.out[649:507] a=50
匿名对象
[Car new]->speed = 300;
[[Car new] run];
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
- 黑马程序员-OC中的类
- 黑马程序员 --- OC中的类
- 黑马程序员--OC--OC中的类
- 黑马程序员——OC中的类
- 黑马程序员——OC中的类
- 黑马程序员——OC中的类
- 黑马程序员 --- OC中的protocol
- [黑马程序员][OC] 类
- 黑马程序员——OC语言中的类和对象
- [黑马程序员][OC]Foundation框架中的集合类
- 黑马程序员-----OC学习之Foundation中的类
- [黑马程序员]OC中的类和对象
- 黑马程序员-初学OC中的内存管理
- 黑马程序员-oc中的构造方法
- 黑马程序员------[Objective-C]OC中的block
- 【黑马程序员】oc中的NSManager文件操作
- 【黑马程序员】-oc中的内存管理
- 黑马程序员------OC中的多态
- 查找两个排序数组的中间值--以升序数组为例
- Minify把CSS和JS压缩和削减
- JAVA IO 学习总结
- 在 linux(ubuntu) 下 安装 LibSVM
- C# 谈泛型集合
- 黑马程序员-OC中的类
- 【bzoj】3672: [Noi2014]购票
- VS2010报错:warning C4715:not all control paths return a value
- intelliJ idea创建分层的项目结构
- [LeetCode] Flatten Binary Tree to Linked List
- latex 安装和使用
- 让我们来谈谈最小生成树(Minimum Spanning Tree)算法
- perl学习笔记(3)—— 坑
- 实习篇---第二十五天