一、 面向对象和面向过程思想

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

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

1) 以用电脑听歌为例子

a) 面向过程

  • 打开电脑
  • 播放电脑中的歌曲
  • 关闭电脑

b) 面向对象(不是相亲的“对象”)

  • 电脑

² 开机

² 播放歌曲

² 关机

2) 区别分析

  • 面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象
  • 没有开发经验很难感受到它们的区别,两种思想都能达到解决问题的目的,但是解决思路不一样
  • 想打电话\发短信 à 找手机,不用分析电话要怎样才能拨通
  • 去饭店吃饭 à 找服务员,不用分析怎么到厨房炒菜
  • 汽车坏了 à 找汽车维修工,不用分析修车的步骤
  • 境界:万物皆对象
  • 面向过程 Procedure Oriented
  • 面向对象 Object Oriented,简称OO
  • 面向对象编程 Object Oriented Programming,简称OOP

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

3. 常用术语

二、 类和对象的关系

面向对象中有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颗炮弹轰掉了2架飞机
  • 小明在公车上牵着一条叼着热狗的狗

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

u 愤怒的小鸟游戏界面

u 植物大战僵尸

u 新浪微博

4) 类名、属性、行为练习

  • 僵尸、炮弹、车、学生、书本

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

OC中的面向对象语法的更多相关文章

  1. OC中的面向对象语法3

    一. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西 ...

  2. OC中的面向对象语法4

    一. 继承 1. 继承的基本用法 l 设计两个类Bird.Dog // Bird的声明 @interface Bird : NSObject { @public int weight; } - (vo ...

  3. 【iOS系列】-oc中特有的语法

    [iOS系列]-oc中特有的语法 oc数据类型: 1,基本类型 2,对象类型 3,id 4,BOOL 5,block 6,SEL 1:category 使用继承关系来扩充一个类,有一个弊病,高耦合性 ...

  4. OC中的点语法,成员变量的作用域

    点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; / ...

  5. OC中的特有语法

    一. 分类-Category 1. 基本用途 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 l 继承 l 分类(Category) 2. 格式 分类的声明 @interface 类名  ...

  6. 深入解读 Js 中的面向对象编程

    前言:今天看了一篇文章觉得很不错,所以给大家分享一下,也许很多人都看过面向对象编程甚至写过这样博客,觉得面向对象编程就那样,没啥好说的,那可能是因为你对这方面知识已经了解,可以选择性跳过.那如果有更通 ...

  7. OC中面向对象2

    一. 定义OC的类和创建OC的对象 接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实现 ...

  8. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

  9. 从认识面向对象到构造函数的标准写法(构造函数的继承、多态、ECMA6中新代替语法class) - 下

    笔记一个包含:认识面向对象.构造函数的封装.继承.多态.ECMA6中新代替语法class 下:包括构造函数的继承.多态.ECMA6中新代替语法class 构造函数的继承 从父一级延续下来的属性和功能( ...

随机推荐

  1. 从设计到开发,硅谷技术专家教你做“声控”APP

    编者:本文为携程机票研发部技术专家祁一鸣在携程技术微分享中的分享内容,关注携程技术中心微信公号ctriptech,获知更多一手干货. [携程技术微分享]是携程技术中心推出的线上公开分享课程,每月1-2 ...

  2. Python访问剪切板

    剪切板访问工具 ----pyperclip he purpose of Pyperclip is to provide a cross-platform Python module for copyi ...

  3. AndroidDevTools简介

    AndroidDevTools简介 Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的Android SDK.开发中用到的工具. ...

  4. ASP.NET MVC PartialView用法

    子页面AreaSelect.cshtml页面的Controller代码: public ActionResult AreaSelect() { return PartialView(); } 父页面前 ...

  5. DataTable转换为List<T>或者DataRow转换为T

    这段时间开发ASP.NETMVC应用程序,从数据库获取数据之后,需要把记录转换为数据集在视图中显示.我们需要把DataTable转换为List<T>或者DataRow转换为T. 本篇中可以 ...

  6. Android网页浏览器的开发

    Android网页浏览器的核心Widget是包含了WebKit的WebView. 首先,布局文件activity_main.xml: <LinearLayout xmlns:android=&q ...

  7. 说说这篇「我为什么从python转向go

    作者 CMGS2015.05.17 15:47* 写了7891字,被143人关注,获得了97个喜欢 说说这篇「我为什么从python转向go」 字数3748 阅读24227 评论21 喜欢81 恩看了 ...

  8. (学习笔记)PHP的输出echo和print

    echo 和 print 之间的差异: echo - 能够输出一个以上的字符串 print - 只能输出一个字符串,并始终返回 1 echo语句 echo 或 echo()均可. 输出换行 echo ...

  9. Git分支(本地)

    1.Git保存的不是文件的差异或者变化量,而只是一系列文件快照(File Snapshot):   2.暂存操作会对每一个文件计算校验和(SHA-1哈希字符串),然后把当前版本的文件快照保存到Git仓 ...

  10. ImFire即时通讯系统构建(需求)

    ImFire需求 一期需求(近期) 1.新用户(账号)注册. 2.用户登入登出,支持pc端,移动端同时登录. 3.获取好友列表,包含好友的各种信息,状态. 4.根据用户id或用户名申请添加好友. 5. ...