黑马程序员——OC基础---面向对象语法

                                                           ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


一.举例

1.OC程序的入口:main函数
int main()
{
printf("第一个OC程序\n")
return 0;
}
2.#import的用途:
1>跟#include一样拷贝文件的内容
2>可以防止文件的内容被重复拷贝
3.举例
#import<Foundation/Foundtion.h>
int main()
{
	//NSLog输出内容会自动换行
	NSLog(@"第二个OC程序!!!");
	return 0;
}

4.主头文件
1>主头文件:最主要的头文件名字一般跟框架名称一样,包含了框架中的所有其他头文件
2>Foundation框架的主头文件名称就是Foundation.h
3>只需要包含Foundation框架主头文件就可以使用整个框架的东西

5.运行过程
1>编写OC的源文件:m.c
2>编译:cc -cxxx.m   xxx.c
3>链接:cc   xxx.o    xxx.o---framework  Foundation
4>运行 ./a.out

6.补充:BOOL(yes/no)
1>举例
#import<Foundation/Foundtion.h>
int main()
{
	BOOL b = YES;
	BOOL b2 = NO;
	BOOL b3 = 1;
	BOOL b4 = 0;
	NSLog(@"%i",b);
	return 0;
}

二.面向对象和面向过程

1.类的设计
1>类名
*类名的第一个字母必须是大写
*不能有下划线
*多个英文单词用驼峰标识
2>属性
3>行为
2.植物大战僵尸的僵尸
*类名:Zoomibie
*属性:life,speed,gongjili
*行为:walk,bite,die

三.类的声明和实现

1.举例
<pre name="code" class="objc">/*类名:car
  属性:轮胎个数,时速
  行为:跑 */
#import<Foundation/Foundtion.h>
//完整的写一个函数:声明和定义(实现)
//完整的写一个类:类的声明和实现
//1.类的声明:声明对象的属性和行为
@interface Car:NSObject
{
	//用来声明对象属性或成员变量
	@public
	int wheels;
	int speed;
}
-(void)run
@end
//类的实现:用来实现@interface中声明的方法
@implementation car
-(void)run
{
	NSLog("@车子跑起来了");
}

@end
int main()
{
	car *p = [car new];
	p->wheels = 4;
	p->speed = 50;
	[p run]
	NSLog("@车子有%个轮子,时速为:%km/h",p->wheels,p->speed);
	return 0;
}

 2.注意 
1>只要是OC对象的方法,必须以减号—开头
2>OC方法中任何数据类型都必须用小括号()括住
3>OC方法中的小括号():括住数据类型

四.方法与成员变量

1.举例
/*类名:person
  属性:体重,年龄
  行为:走路 */
#import<Foundation/Foundtion.h>
//完整的写一个函数:声明和定义(实现)
//完整的写一个类:类的声明和实现
//1.类的声明:声明对象的属性和行为
@interface Person:NSObject
{
	//用来声明对象属性或成员变量
	@public
	int age;
	double weight;
}
-(void)walk;
@end
//类的实现:用来实现@interface中声明的方法
@implementation person 
-(void)walk
{
	NSLog(@"%d岁,%d公斤的人走了一段路",age,weight);
}

@end
int main()
{
	Person*p = [person new];
	p->age = 20;
	p->weight = 50.0;
	[p walk]
	return 0;
}

2.解释
1>@interface就好像暴露在外面的时钟表面
2>@implementation就好像内部的构造实现

3.常见错误
1>int wheels = 4;不允许在这里初始化
2>static int wheels;不能随便将成员变量当做C语言中的变量来使用

4.OC方法的区别
1>对象方法都是以减号—
2>对象方法的声明必须写在@interface和@end之间,对象方法的实现必须写在@implementation和@end之间
3>对象方法只能由对象调用,对象方法归类所有

5.函数的区别
1>函数能写在文件中的任意位置,函数归文件所有
2>函数调用不依赖于对象
3>函数内部不能直接访问某个对象的成员变量

6.类的合理设计
/*类名:学生
  属性:性别,生日,体重
  行为:吃,跑步,遛狗,喂狗 */
typedef enum{
	sexMan,
	sexWoman
}Sex;
typedef struct{
	int year;
	int month;
	int day;
}Date;
#import<Foundation/Foundtion.h>
@interface Student:NSObject
{

	sex sex;
	Date birthday;
	double weight;
}
-(void)eat;
-(void)run;
@end
@implementation student  
-(void)eat
{
	weight += 1;
	NSLog(@"吃完这次后的体重是%f",weight);
}
-(void)run
{
	weight -= 1;
	NSLog(@"跑完这次后的体重是%f",weight);

}

@end
int main()
{
	Student*s = [student new];
	s->weight = 50;
	s->sex = SexMan;
	Date d = {2011,9,10};
	s->birthday = d;
	return 0;
}

五.方法的声明和实现

/*计算器类
  方法:
  1>返回π
  2>计算某个整数的平方
  3>计算两个整数的和 */
#import <Foundation/foundation.h>

@interface JiSuanQI:NSObject
-(double)pi;
@end
@implementaton JiSuanQi
-(double)pi;
{
	return 3.14;
}
@end
int main()
{
	return 0;
}




 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值