一、声明类接口步骤:

1、声明一个类接口,使用@interfacekeyword加上类名称。

2、用  { 实例变量 }  来定义各种数据成员。

3、方法声明,採用中缀符语法声明一个c函数,用到了冒号 : 。

二、声明类接口实例:

//声明圆形circle类接口
@interface Circle : NSObject
{
ShapeColor fillColor;//每次创建新的Circle对象后,对象中都包含这两个元素——类的实例变量
ShapeRect bounds;
}//指定实例变量 -(void) setFillColor: (ShapeColor) fillColor;//方法声明、中缀符
-(void) setBounds: (ShapeRect) bounds;
-(void) draw; @end //Circle 完毕类的声明

三、实现类步骤

1、用keyword@implementation加上类名称

2、实现类中声明的方法,编写方法体 { 方法体 } 。

四、实现类实例

@implementation Circle//类实现

-(void) setFillColor: (ShapeColor) c
{
fillColor = c;
}//setFillColor -(void) setBounds: (ShapeRect) b
{
bounds = b;
}//setbounds -(void) draw
{
NSLog(@"drawing a circle at(%d %d %d %d) in %@",
bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor)
);
}//draw @end//Circle 完毕类的实现

五、案例练习——几何图形的绘制和填充颜色

//
// main.m
// Shapes-Object
//
// Created by jason on 14-6-10.
// Copyright (c) 2014年 JasonApp. All rights reserved.
// #import <Foundation/Foundation.h> //定义形状的不同颜色
typedef enum{
kRedColor,
kGreenColor,
kBlueColor
} ShapeColor; //定义一个矩形来指定屏幕上的绘制区域
typedef struct{
int x,y,width,height;
} ShapeRect; //负责转换传入的颜色值,并返回NSString字面量
NSString *colorName(ShapeColor color)
{
switch (color) {
case kRedColor:
return @"Red";
break; case kGreenColor:
return @"Green";
break; case kBlueColor:
return @"Blue";
break;
} return @"no clue"; }//colorName //声明圆形circle类接口
@interface Circle : NSObject
{
ShapeColor fillColor;//每次创建新的Circle对象后,对象中都包含这两个元素——类的实例变量
ShapeRect bounds;
}//指定实例变量 -(void) setFillColor: (ShapeColor) fillColor;//方法声明、中缀符
-(void) setBounds: (ShapeRect) bounds;
-(void) draw; @end //Circle 完毕类的声明 @implementation Circle//类实现 -(void) setFillColor: (ShapeColor) c
{
fillColor = c;
}//setFillColor -(void) setBounds: (ShapeRect) b
{
bounds = b;
}//setbounds -(void) draw
{
NSLog(@"drawing a circle at(%d %d %d %d) in %@",
bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor)
);
}//draw @end//Circle 完毕类的实现 //定义矩形
@interface Rectangle : NSObject
{
ShapeColor fillColor;
ShapeRect bounds;
} - (void) setFillColor: (ShapeColor) fillColor; - (void) setBounds: (ShapeRect) bounds; - (void) draw; @end // Rectangle @implementation Rectangle - (void) setFillColor: (ShapeColor) c
{
fillColor = c;
} // setFillColor - (void) setBounds: (ShapeRect) b
{
bounds = b;
} // setBounds - (void) draw
{
NSLog (@"drawing a rectangle at (%d %d %d %d) in %@",
bounds.x, bounds.y,
bounds.width, bounds.height,
colorName(fillColor));
} // draw @end // Rectangle //定义OblateSphereoids
@interface OblateSphereoid : NSObject
{
ShapeColor fillColor;
ShapeRect bounds;
} - (void) setFillColor: (ShapeColor) fillColor; - (void) setBounds: (ShapeRect) bounds; - (void) draw; @end // OblateSphereoid @implementation OblateSphereoid - (void) setFillColor: (ShapeColor) c
{
fillColor = c;
} // setFillColor - (void) setBounds: (ShapeRect) b
{
bounds = b;
} // setBounds - (void) draw
{
NSLog (@"drawing an egg at (%d %d %d %d) in %@",
bounds.x, bounds.y,
bounds.width, bounds.height,
colorName(fillColor));
} // draw @end // OblateSphereoid //定义三角形
@interface Triangle : NSObject
{
ShapeColor fillColor;
ShapeRect bounds;
} - (void) setFillColor: (ShapeColor) fillColor; - (void) setBounds: (ShapeRect) bounds; - (void) draw; @end // Triangle @implementation Triangle - (void) setFillColor: (ShapeColor) c
{
fillColor = c;
} // setFillColor - (void) setBounds: (ShapeRect) b
{
bounds = b;
} // setBounds - (void) draw
{
NSLog (@"drawing a triangle at (%d %d %d %d) in %@",
bounds.x, bounds.y,
bounds.width, bounds.height,
colorName(fillColor));
} // draw @end // Triangle //画形状
void drawShapes (id shapes[], int count)
{
for (int i = 0; i < count; i++) {
id shape = shapes[i];
[shape draw];
}
}//drawShapes int main(int argc, const char * argv[])
{ id shapes[4]; ShapeRect rect0 = { 0, 0, 10, 30 };
shapes[0] = [Circle new];
[shapes[0] setBounds: rect0];
[shapes[0] setFillColor: kRedColor]; ShapeRect rect1 = { 30, 40, 50, 60 };
shapes[1] = [Rectangle new];
[shapes[1] setBounds: rect1];
[shapes[1] setFillColor: kGreenColor]; ShapeRect rect2 = { 15, 19, 37, 29 };
shapes[2] = [OblateSphereoid new];
[shapes[2] setBounds: rect2];
[shapes[2] setFillColor: kBlueColor]; ShapeRect rect3 = { 47, 32, 80, 50 };
shapes[3] = [Triangle new];
[shapes[3] setBounds: rect3];
[shapes[3] setFillColor: kRedColor]; drawShapes (shapes, 4); return (0);
}

六、小结

1、过程式编程——“函数第一,数据第二”

2、OOP——“数据第一,函数第二”

3、“开放/关闭原则”——软件实体应该对拓展开放、对改动关闭

4、objective-c中不存在private方法

5、objective-c执行时负责执行重要的任务,比方对象发送消息和传递參数等,以支持应用程序的执行

6、实例化对象——向对应的类发送new消息来创建对象。

【《Objective-C基础教程 》笔记ch03】(四)OC中的OOP的更多相关文章

  1. jQuery官方基础教程笔记(转载)

    本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计 ...

  2. oc中的oop基础及类的基本介绍

    面向对象的(OOP)的基础知识 类(class):表示一组对象数据的结构体,对象通类来得到自身.类名首字母大写. 对象(objcet):是一种包含值和指向其类的隐藏指针的结构体.运行中的程序中通常会有 ...

  3. python基础教程笔记—即时标记(详解)

    最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...

  4. 阮一峰:jQuery官方基础教程笔记

    jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来 ...

  5. php基础教程笔记

    php的环境搭建很简单,从网上下载wamp service 2.5,官方网址http://www.wampserver.com/,有32位和64位的,必须下载跟系统一致的版本,不然会出现奇怪的错误,这 ...

  6. Cytoscape基础教程笔记

    昨天开始学用Cytoscape,其tutorial分为两个部分,基础的和高级 的.基础教程又分成了四课:Getting Started.Filters & Editor.Fetching Ex ...

  7. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  8. Python基础学习笔记(四)语句

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://w ...

  9. python基础教程笔记—画幅好画(详解)

    今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个 ...

  10. swift基础教程笔记

    http://www.imooc.com/learn/127 <玩儿转swift> 慕课网教程笔记,自己根据2.1的语法做了更新. I. 1.通过playground来学习.熟悉swift ...

随机推荐

  1. nio复习总结

    观察者: 多个对象依赖一个对象的状态, 当这个对象状态发生改变时,依次通知多个对象. 消息的分发和处理 事件驱动 / IO多路复用 借助select  epoll等 reactor: io事件触发时, ...

  2. java IO流知识点总结

    I/O类库中使用“流”这个抽象概念.Java对设备中数据的操作是通过流的方式.表示任何有能力产出数据的数据源对象,或者是有能力接受数据的接收端对象.“流”屏蔽了实际的I/O设备中处理数据的细节.IO流 ...

  3. wpf mvvm模式下的image绑定

    view文件 <Image Grid.Column="2" Width="48" Height="64" Stretch=" ...

  4. opencv(5)GUI

    OpenCV的图形用户界面(Graphical User Interface, GUI)和绘图等相关功能也是很有用的功能,无论是可视化,图像调试还是我们这节要实现的标注任务,都可以有所帮助. 窗口循环 ...

  5. #define const typedef

    #define用法 1. 定义简单的常数:定义常量,便于修改 #define N 1000 2. 定义简单的函数:注意多使用括号 define可以像函数那样接受一些参数,如下: #define max ...

  6. bzoj 1899 贪心+dp

    思路:这个贪心排顺序我居然没看出来. 吃饭时间长的在前面, 用反证法很容易得出. 剩下的就是瞎dp啦. #include<bits/stdc++.h> #define LL long lo ...

  7. JavaScript对象参考手册

    1.array 属性: constructor 返回原型函数: length 数组个数: prototype 向对象添加属性和方法 方法: concat() 连接两个或多个数组,并返回结果: fill ...

  8. Linux下 rz 和 sz 命令的安装与使用

    目录 Linux下 rz 和 sz 命令的安装与使用 rz/sz命令的安装 sz命令-发送文件到本地(下载): rz命令-本地上传文件到服务器(上传): 声明 Linux下 rz 和 sz 命令的安装 ...

  9. python使用web.py开发httpserver,解决post请求跨域问题

    使用web.py做http server开发时,遇到postman能够正常请求到数据,但是浏览器无法请求到数据,查原因之后发现是跨域请求的问题. 跨域请求,就是在浏览器窗口中,和某个服务端通过某个 “ ...

  10. Git 统计提交代码行数

    指定用户名 git log --author="your_name_here" --pretty=tformat: --numstat | awk '{ add += $1; su ...