(Object-C)学习笔记(二) --OC语言面向对象和基本概念

  现在的高级编程语言大部分都是面向对象编程的。

  那么什么是面向对象呢?我用我的见解举个例子:假设你正在用word编辑这么两件事 1.一个人走到桌子前面(1)拿起可乐(2)打开盖子(3)喝光(4)放下瓶子(5)。 2.一个人走到桌子前面(1)拿起点心(2)吃了(3)。 

  那么如果是用面向过程的方式来编程,第一件事是一个大括号,里面写着这5步。第二件事是一个大括号,里面写着3步。写这么两件事全部手写,不允许黏贴复制,一共8步。

  如果使用面向对象的方式来编程,把这个过程分为了动作和物品,把这些步骤写出来但是放到一边,需要什么就复制粘贴什么,相同的动作或者物品不需要写两遍。上面两件事一共写7步就行,当然如果你第二件事喝雪碧的话,你只需要5步+一瓶雪碧就行了。

1.面向过程

  数据结构+算法

2.面向对象

  属性+行为

  为什么使用面向对象的编程思想

  使用面向对象的编程思想,可以大大降低开发周期和成本,提高开发效率,提升代码的复用性,降低开发难度,提高了代码的可读性和可维护性。

 

什么是类

  面向对象的重要概念。类是一个抽象的概念,我们常说的一类人,就是这个意思。比如说学生,工人这都是代表的一大部分人。具体到OC语言中,类(class)是一对相关联的.m .h文件(名字相同)。这一对就是一个类。

什么是对象

  对象就是一个实例化的类,比如学生当中有一个张三,跟抽象化的学生不一样,你可以准确知道张三的ID、姓名、身高、体重等。

变量

  在.h里面声明的叫做公共变量,在.m里面声明的叫做私有变量。

  @public 可以在任意位置访问

  @package 可以在包内部访问

  @protect 可以在本类及子类中访问

  @practice 只能在本类在访问

成员变量和实例变量

  在类中声明的变量就叫成员变量,当类被实例化成一个实例时,这个实例里的变量就叫实例变量。

方法

  方法是类的一部分,代表类可以干什么,类似于c的函数。

  方法定义:-(void)show; 多参方法:-(void)show:(NSString)name andAge:(int)age;

括号里面的void是返回值 返回什么类型的 写什么类型

实例方法与类方法

  -开头的是实例方法,一般只能由实例对象调用。+开头的是类方法,由类名直接调用。

什么是属性

  属性有三部分组成,分别是setter和getter方法,以及一个存放值的实例变量。在如今的iOS版本中,setter和getter是隐藏的,我们定义属性时 只在.h或.m中 

@property NSString* name;  定义就行.

示例代码:

 


 1 #import <Foundation/Foundation.h>
 2 
 3 @interface TRStudent : NSObject
 4 @property NSString* name;
 5 @property int age;
 6 @property int ID;
 7 @property NSString* address;
 8 -(id)initWithName:(NSString*)name andAge:(int)age andID:(int)ID andAddress:(NSString*)address;
 9 -(void)show;
10 @end


 1 @implementation TRStudent
 2 -(id)init
 3 {
 4     if (self=[super init]) {
 5         self.name=@"liu";
 6         self.age=45;
 7         self.ID=123456;
 8         self.address=@"趵突泉";
 9     }
10     return self;
11 }
12 -(id)initWithName:(NSString *)name andAge:(int)age andID:(int)ID andAddress:(NSString *)address
13 {
14     if (self=[super init]) {
15         self.name=name;
16         self.age=age;
17         self.ID=ID;
18         self.address=address;
19     }
20     return self;
21 }
22 -(void)show
23 {
24     NSLog(@"%@ %d %d %@",self.name,self.age,self.ID,self.address);
25 }
26 @end

1 int main(int argc, const char * argv[]) {
2     @autoreleasepool {
3         TRStudent *trs=[[TRStudent alloc]init];
4         [trs show];
5         TRStudent *trs1=[[TRStudent alloc]initWithName:@"wang" andAge:15 andID:1234 andAddress:@"红叶谷"];
6         [trs1 show];
7     }//cocoa  .h .m 分开放的
8     return 0;
9 }

 

 

posted @ 2016-02-09 16:27  FirstAurora  阅读(864)  评论(0编辑  收藏  举报