黑马程序员------oc语言学习笔记之类和对象

------<Java培训、Android培训、iOS培训、.Net培训期待与您交流>------

一、面向对象和面向过程
1、面向过程更取向与解决问题的过程和步骤,比如把衣服放进洗衣机 脱掉衣服,走到洗衣机,打开洗衣机,放进衣服,放进洗衣粉,

设置洗衣机洗衣服。

2、面向过程就是解决问题需要哪些对象
例如,洗衣服
洗衣机自己打开盖子
洗衣机放水
人放衣服
洗衣机洗启动
在面向对象的思想里万物都是对象!
面向对象的优点:大幅度增加项目的成功率、减少维护费用和提高可移植性和可靠性
3、面向对象与面向过程的区别
面向过程:
强调的是功能行为,关注的是解决问题需要那些步骤
面向对象:
将功能封装对象,强调具备了功能的对象
关注的是解决问题需要那些对象
面向对象是基于面向过程的

二、类和对象
类和对象 就好比是 建筑图纸与建筑
先有类,才能创建对象
1、类
类的命名规则
>1、类名的第一个字母必须是大写
>2 不能用下划线
>3多个英文单词必须用驼峰标识

类的构成
>1类名,例如:学生,老师,人,狗等
>2类的属性,比如学生的成绩、身高、体重
>3类的方法,对属性的操作的方法

2、类的声明和实现
@interface 类名
{

成员变量
……

- (void)方法名;
@end
类的实现
@implementation
-  (void)方法名
{
方法的实现

@end

例子:

import<Foundation/foundation.h>		//foundation.h 是oc语言的基础框架
 //Nsobject 是一个父类,任何类都要继承Nsobject
@interface  Person : NsObject			//声明一个person类
{
	@public				//可以让外部访问成员变量,只需要定义一次
	int weight;
	int age;				//定义成员变量
}
//实现对象方法,对象的方法必须用-号开头
//对象方法中任何数据类型都必须用()括住
- (void)Age;      //定义方法
@end

//用来实现interface中声明的方法
@implementation Car

- (void)Age					
{
	Nslog(“@the person Age is %d”,age);			
}
@end
int main()
{
	//定义一个对象指针,指向新创建的对象
	//执行了类的new行为创建对象
	//[类名  new]每次都会创建一个新对象并且反悔新对象本身
	Person *p=[Person new]; 
	p->weight=100;
	p->age=50;
	//调用Age方法
	[p Age];
	
	Person *p1=[Person new];
	p->weight=120;
	p->age=40;
	[p1 Age];


	return 0;
	
}

三、类和成员变量常见的错误

1.只有类的声明没有类的实现
例如

#import <Foundation/Fondation.h>
@interface tom :NSObject
{
int age;
int weight;
}
-(void)run;
@end
int main()
{
return 0;
}

2.类和成员变量不能嵌套包含,只能一对一配对的@end,中间不能嵌套任何东西
在类里定义了方法,必须在implement
ation里面实现,
在implementation里实现的方法必须在interface里定义

3.成员变量必须在对象中调用,不能单独调用
  成员变量的初始化定义值不能在interface里给成员变量赋值

例如:

@interface tom :NSObject
{
int age=4;//error;
int weight;
}

4 不能在interface里随便将c语言的变量来使用

@interface tom :NSObject
{
int age;
int weight;
Static int wheels;//error
}
三、oc中方法和函数的区别

对象方法:
1>对象方法只能声明在@interface和@end之间,oc方法不能独立于类存在
2>对象方法必须以-号开头
3>对象方法必须由对象调用,不能单独调用
4>对象方法属于类
函数:
1>函数可以存在与文件的任何位置
2>函数的调用不依赖对象,随时调用
3>函数内部不能通过成员变量访问某个成员变量
OC对象和函数的关系:

#import <Foundation/Foundation.h>

@interface Car : NSObject

{//成员变量
@public
int wheels;
int speed;
}
- (viod)run;
@end


@implemention Car
- (void)run
{	
NSLog(@"%d个轮子,速度为%dkm/h的车子跑起来",wheels,speed);
}
@end

void test(int w,int s)
{
w=20;
s=200;
}

void test1(Car *newc)
{
newc->wheels=5;//函数只能通过对象来调用成员变量
}

void test2(Car *newc)
{	
Car *d=[Car new];
d->wheels=7;
d->speed=300;
newc=d;
newc->wheels=6
}
int main()
{
Car *c = [Car new];
c->wheels=5;
c->speed=200;
test1(c);
test2(c);	
return 0;

}

五、带参数的成员方法命名规则
- (返回类型)方法名:(参数类型)参数名:(参数类型)参数名
-(void)square:(double)number
例如

#import<Foundation/Foundation.h>

@interface jsq : NSObject
-(double) pi;
-(int)pingfang:(int)num;
@end

@implementation jsq
-(double) pi
{
	return 3.14;
}
-(int)pingfang:(int)num
{
	return num*num;
}
@end

int main()
{
	jsq *p=[jsq new]
	int a=[p pingfang:10];
	NSLog(@"%d",a);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值