一、声明类接口步骤:

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. asterisk各种报错

    1.控制台打印出: Got SIP response "Temporarily Unavailable" back from 210.13.87.110:5060   造成原因:在 ...

  2. SQLSERVER中的非工作时间不得插入数据的触发器的实现

    create trigger trigger_nameon table_namefor insert,update,deleteasif (datepart(yy,getdate())%4=0 or ...

  3. 实际工作与JAVA面试题

    1.String 和StringBuilder.StringBuffer 的区别? 答:Java 平台提供了两种类型的字符串:String和StringBuffer / StringBuilder,它 ...

  4. Linux基础入门学习笔记之二

    第三节 用户及文件权限管理 Linux用户管理 Linux是可以实现多用户登录的操作系统 查看用户 who命令用于查看用户 shiyanlou是当前登录用户的用户名 pts/0中pts表示伪终端,后面 ...

  5. sass问题

     用sass的minix定义一些代码片段,且可传参数 /** * @module 功能 * @description 生成全屏方法 * @method fullscreen * @version 1. ...

  6. java解析Xml格式的字符串

    最近在工作中,需要调别的接口,接口返回的是一个字符串,而且内容是xml格式的,结果在解析json的时候报错,最终修改了接口的返回方式,以Map返回, 才得以接收到这个xml的字符串,然后通过dom4j ...

  7. jquery插件使用记录

    1.imgPreview(图片预览功能插件) demo地址:http://james.padolsey.com/demos/imgPreview/full/

  8. ASP.NET:MVC中文件上传与地址变化处理

    目录 文件的上传和路径处理必须解决下面列出的实际问题: 1.重复文件处理 2.单独文件上传 3.编辑器中文件上传 4.处理文章中的图片路径 5.处理上传地址的变化 一.上传文件和重复文件处理 文件处理 ...

  9. 【POJ】1026.Cipher

    题解 置换群的快速幂,然而我姿势水平不高,样例过不去,然后才明白这个置换的意思是这个位置上的数代表要把原位置的某个数换过来 需要新开一个数组存结果 代码 #include <iostream&g ...

  10. LoadRunner参数化取值与连接数据库

    LoadRunner参数化取值与连接数据库   LoadRunner在使用参数化的时候,通常都是需要准备大数据量的,也因此LoadRunner提供两种参数化取值方式,一种是手动编辑,另一种就是通过连接 ...