黑马程序员3 os 我来了! 面向对象与os初体验

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

感觉离目标又 进了一步,少说话,多敲代码是王道!!!


本期目录:

1.错误与解答

2.mac下oc开发入门

3.面向对象的理解与初体验

4.oc简单语法剖析

5.oc第一阶段学习总结

6.近期规划



一:错误与解答

把自己初入oc领域所出现的各种“低级错误”记录下来,激励自己:万丈高楼平地起!!!

a. 会和java语言混淆概念。java中方法的调用时 Object.method(); oc中[指针 method]。java代码中没有其他代码的介入,而oc中掺杂了好多c代码。

b.oc的字符串一定要以@开始。声明的方法必须以-开始。@interface和@end@implementation和@end一定成对出现,且不能嵌套

c.链接时要跟上 -framework Foundation,否则一大堆错误。

d. 函数名的大小写。比如:NSLog() ,不是NSlog。

e.@interface 中定义的是实例变量不能赋值,也不能随便加static。记住:方法是方法,函数是函数。

f.oc程序自上而下执行时,main不能调用为声明的类,可以先有声明,实现放在main之后

二: 面向对象的理解与初体验

首先介绍一下oc

Ø   C语言的基础上,增加了一层最小的面向对象语法

Ø   完全兼容C语言

Ø   可以在OC代码中混入C语言代码,甚至是C++代码

Ø   可以使用OC开发Mac OS X平台和iOS平台的应用程序

(注意:oc关键字都已@开始与c语言区分)


开发历程:



世界万物皆对象

面向对象与面向过程
面向过程的编码方式:典型C语言。过程式的编程方式让代码逻辑给程序员处理,程序员必须十分小心的去处理程序逻辑和细节。
面向对象的编码方式:oc与java。面向过程的编码方式让组件有了逻辑,他们可以独立的完成与他们本身相关的处理逻辑。
举个例子:
汽车和驾驶员。按照C语言的思想,驾驶员必须明白如何启动汽车,如何往前,如何停下。驾驶员本身必须完成众多的逻辑。而对于面向对象的方式,汽车不在乎谁是驾驶员,驾驶员也不在乎汽车如何往前往后,驾驶员关心的是自己如何到达目的地,开哪辆车。汽车只关心,目的地,驾驶员是谁。所以,“汽车”智能化了!


名词解释:

类:“一种和一类”的意思。类就像一个“模板“,同一个模板可以产生好多相同”具体“,类中反映了本类实物的所用内容,没有具体的成分。

对象:类的实例。对象时类的具体化,类中都是大家有的内容,而对象中则是个性的内容。

总结:

 OC中的面向对象

1)     OC中的相当于图纸,用来描述一类事物。也就是说,要想创建对象,必须先有类

2)     OC利用类来创建对象,对象是类的具体存在

3)     因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象



三: oc简单语法分析


#import<Foundaion/Foundation.h>
<pre name="code" class="objc">/*类名:Person
 属性:(成员变量/实例变量):体重,年龄
行为(方法):走路
*/
//类声明
@interface Person : NSObject
{
    @public
    int age;
    double weight;//类属性(实例变量)
}
-(void)walk;
@end
//类实现
@implementation Person

-(void)walk
{
    NSLog(@"%d岁,%f公斤的人走了一段路",age,weight);
}

@end

//入口函数main与c语言相通
int main()
{
    Person *p = [Person new];
    p->age = 20;
    p->weight = 50.0;
    
    [p walk];
    
    return 0;
    
}

 

与java语言不同的是:java中接口与实现分离,入口在主类中,且java中文件名必须和主类同名。上面代码实现了person类,继承自NSObject 类(new方法的调用)。

代码分析:

oc中类的什么放在@interface @end中,实现放在@implementation @end中。实现中只实现interface中声明的方法,比如:Person中声明了walk方法,@implementation中就有他的声明。这和java中接口与实现基本一致。即:

<span style="font-size:14px;">#import <Foundation/Foundation.h>  //空一格注释

@interface
{

	//变量域,变量的声明
}

//方法声明

@end

//实现部分
@implementation
{
	//可以有implementation自己的变量域
	
}

//方法的实现
@end

int main()
{
	//主函数逻辑部分
	return 0;
}</span>


四:oc第一阶段总结

oc中@interface 和@end,@implementation 和@end 意义

总结以一段代码结束,代码包含了第一阶段所有的内容

<pre name="code" class="objc"><pre name="code" class="objc">#import<Foundation/Foundation.h>

@interface Car : NSObject
{
    @public
    int wheels;
    int speed;
}
//类方法
-(void)run;
@end

@implementation Car

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

@end
//c语言函数
void test(int w,int s)
{    w = 20; 
   s = 200;    
}
void test1(Car *newC) 		//传入Car对象,试图修改car对象内容
{   
	 newC->wheels = 5;  
  }

int main()
{ 
 Car *c = [Car new];//c指向car对象   
 c->wheels = 4;    c->speed = 250; 
 
// test(c->wheels,c->speed);    
test1(c);       //检验test1的作用方式  
 
[c run];
    
    
 return 0;
    
}


 
 

 

结果



总结oc面向对象的编码发方式,但是却可以无缝嵌入c代码,且切入的c代码可以很好的与oc源码共存,二者不互相排斥。最让我惊叹的是:c函数可以很容易的调用oc对象!!!




五:近期规划

打算三天快速oc理解与实验,两天foundation框架。一步步实现黑马提供的视频代码。学习的过程中多去敲代码,在实验中找到根据和理解。


目标:黑马程序员。




------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值