学习笔记:OC简介及面向对象(1)

来源:互联网 发布:it服务平台 编辑:程序博客网 时间:2024/05/17 04:20


一、OC简介

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

完全兼容C语言

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

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

二、OC语法预览

1.      关键字

基本上所有关键字都是以@开头

下面列举一些常见的关键字,看一眼就行了,不用去翻资料查找它们的含义

@interface@implementation@end

@public@protected@private@selector

@try@catch@throw@finally 

@protocol@optional@required@class

@property@synthesize@dynamic

selfsuperid_cmd__block__strong__weak

 

2.     字符串以@开头

比如@"Hello"是OC中的字符串,而"Hello"则是C语言中的字符串

2.     其他语法


三、第1个OC程序

过程:

1.     代码编写

跟C语言一样,OC程序的入口依然是main函数,只不过写到一个.m文件中。比如这里写到一个main.m文件中(文件名可以是中文)

#include<stdio.h>

int main()

{

   printf("1OC程序\n");

    return0;

}

 

2.   终端指令

编译cc –cmain.m

链接cc main.o

运行./a.out

 

四、第2个OC程序

1.     代码编写

来点跟C语言不一样的,使用NSLog函数输出内容

#import <Foundation/Foundation.h>

int main()

{

   NSLog(@"2OC程序");

    return0;

}

 

2.   终端指令

编译cc –cmain.m

链接cc main.o –framework Foundation

运行./a.out

 

3.     NSLog与printf的区别

NSLog接收OC字符串作为参数,printf接收C语言字符串作为参数

NSLog输出后会自动换行,printf输出后不会自动换行

使用NSLog需要#import<Foundation/Foundation.h>

使用printf需要#include<stdio.h>

 

4.     #import的作用

跟#include一样,用来拷贝某个文件的内容

可以自动防止文件内容被拷贝多次,也就以为着头文件中不用加入下面的预处理指令了

#ifndef    _STDIO_H_

#define   _STDIO_H_

#endif

 如图:


5.     Foundation框架的作用

开发OC、iOS、Mac程序必备的框架

此框架中包含了很多常用的API(应用编程接口)

框架中包含了很多头文件,若想使用整个框架的内容,包含它的主头文件即可

#import<Foundation/Foundation.h>


主头文件:

1、名字一般与框架名称一样,包含了框架中的所有其他文件

2、Foundation框架的主头文件名称就是Foundation.h

3、只要包含主头文件就可以使用整个框架的东西


运行过程:

编写OC源文件:.m、.c

编译: cc -c   xxx.m  xxx.c

链接:cc xxx.o xxx.o -framework Foundation

(只有用到了Foundation框架才需要加上-framework Foundation)


6.     BOOL的使用

BOOL类型的本质

typedefsignedcharBOOL;

BOOL类型的变量有2种取值:YES、NO

#define YES (BOOL)1

#define NO  (BOOL)0

BOOL的输出(当做整数来用)

NSLog(@"%d%d",YES,NO);

 

五、第3个OC程序

1.         多个.m文件的开发

跟C语言中多个.c文件的开发是一样的

1)         编写3个文件

main.m

#import "one.h"

int main()

{

    test();

    return0;

}

one.h

void test();

one.m

#import <Foundation/Foundation.h>

void test()

{

    NSLog(@"调用了test函数");

}

 

2)         终端指令

编译:cc –cmain.m test.m

链接:cc main.otest.o –framework Foundation

运行:./a.out

 

2.         .m文件和.c文件混用开发

1)     编写3个文件

main.m

#import "one.h"

int main()

{

    test();

    return0;

}

one.h

void test();

one.c

#include<stdio.h>

void test()

{

    printf("调用了test函数\n");

}

 

2)     终端指令

编译:cc –cmain.m test.m

链接:cc main.otest.o

运行:./a.out

 

面向对象和面向过程思想

OC是面向对象的,C是面向过程的。面向对象和面向过程只是解决问题的两种不同思想

1.     面向对象和面向过程的区别

1)         以用电脑听歌为例子

面向过程:

打开电脑

播放电脑中的歌曲

关闭电脑

 

面向对象

电脑  

开机  

关机

 

2)         区别分析

面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象

没有开发经验很难感受到它们的区别,两种思想都能达到解决问题的目的,但是解决思路不一样

 

2.     现实生活中面向对象的例子

想打电话\发短信 à 找手机,不用分析电话要怎样才能拨通

去饭店吃饭 à 找服务员,不用分析怎么到厨房炒菜

汽车坏了 à 找汽车维修工,不用分析修车的步骤

境界:万物皆对象

 

3.     常用术语

面向过程 ProcedureOriented

面向对象 ObjectOriented,简称OO

面向对象编程 ObjectOriented Programming,简称OOP

 

二、  类和对象的关系

面向对象中有2个非常重要的概念:类和对象

1.     如何创建对象

1)     面向对象解决问题的时候必须有对象,那如何创建对象呢?

 

2)     现实生活的例子:如何创造汽车对象?

a)          需要先有汽车的建造图纸,图纸上描述清楚汽车应该具备的属性和功能(行为)

属性:轮子数、时速

功能(行为):跑

b)         然后再根据图纸上的描述生成汽车

c)          每一辆汽车都是对象,都有自己具体的属性值,都是图纸的实例

d)         图纸是抽象的,房子是具体的。图纸是对房子对象的高度概括

 如图:


2.     OC中的面相对象

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

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

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

 

3.     需要设计哪些类,如何设计类

1)     类的设计,只关心3样东西:

事物名称(类名):人(Person)

属性:身高(height)、年龄(age)

行为(功能):跑(run)、打架(fight)

2)     一般名词都是类

3)     拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

4)     哪个对象最清楚这个行为,就把这个行为写到哪个对象中去。打开电脑(开机)这个行为应该是属于电脑的。


 

0 0
原创粉丝点击