1.1 对象的概念

面向功能的软件设计的局限性:难于应对需求的变更,

维护成本会比较高。对象有属性,并且能够接收消息来进行相应的处理。属性指的是对象的性质和所具有的信息。基于面向对象的软件开发,比较接近于人的思考方式,更善于应对需求变更。

消息是对象之间通信的唯一手段。对象收到消息后,会解析并处理消息。具体的处理方法和这个对象的内部实现叫做方法。送信的对象称为发送者,收信的对象称为接收者。通过消息协调各个对象之间的消息发送,使其作为一个整体运行,这就是面向对象的软件运行模式。

使用对象的概念对问题进行抽象化的方法叫作面向对象。抽象化指的是尽可能地不考虑相关细节,只关注对象的核心和本质。

对象的属性一般被定义为指向其他对象的指针,这个指针叫做实例变量或者变量。变量可能指向一个空的对象,也可能不是一个指针,可以是数值对象。对象和对象之间一般是通过一个对象的某个属性是另外一个对象的变量来建立关系的。没有引用关系的两个对象之间无法发送消息。

把具备相同变量和方法的对象提炼出来,做成“模版”,之后使用“模板”来创建各个具体对象。这种“模板”就是类。类包含了一组特定对象的共有特性。用类创建对象的过程叫做实例化,生成的对象叫做实例对象,或简称为实例。方法是在类中统一定义的,同一个类不同实例对象的方法都是相同的。

1.2模块和对象

软件开发中模块也是一个功能单位,构成一个软件的各个相互独立的部分叫做模板。一个模块由变量、方法甚至其他模块构成。所以模块具备层次性。

独立性高(低耦合、高内聚)的模块划分是最佳的划分方式。模块的独立性指的是每个模块之间的交集应该尽可能地小。减少模块辩护时的影响,降低维护成本。一个独立性高的模块会把what和how清楚的分开,声明和实现是分开的,只要保持声明一致,具体的实现可以随时被更换成性能更高的实现,提高软件的可维护性。

模块独立性的划分原则是只对外提供最小限度的接口信息,内部实现不对外公开。这个原则叫做信息隐蔽或封装。

绝大多数基于面向对象语言开放的程序中,对象是由类的定义来描述的,实例对象是在程序运行的时候动态生成的。类的定义和实现文件就是构成程序的模块。

类是由实例变量和方法构成的。类公开给外部的、关于如何使用这个类的信息叫做接口。

一个设计良好的类只会把必须公开的信息记录在接口中,这样才能够加强独立性。

为了高效率地实现进程间通信,OC特别定义了一种接收方无需返回应答的消息。

iOS | OC 面向对象的编程相关推荐

  1. iOS - OC 面向对象语法

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

  2. # iOS 一窥并发编程底层(一)

    语歌博客 逻辑控制流 在我们系统中通常是会有其它程序在运行,进程是可以告诉每一个程序它是独自在使用处理器.这个时候如果有调试器单步去执行程序,就会出现一系列的程序计数器( PC ) 值,这些值唯一的对 ...

  3. 《C++面向对象高效编程(第2版)》——3.11 类名、成员函数名、参数类型和文档...

    本节书摘来自异步社区出版社<C++面向对象高效编程(第2版)>一书中的第3章,第3.11节,作者: [美]Kayshav Dattatri,更多章节内容可以访问云栖社区"异步社区 ...

  4. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载

    前言:iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载是在前篇iOS开发之网络编程--使用NSURLConnection实现大文件下载的基础上进行    断点续传的设置 ...

  5. python笔记2(函数 面向对象 文件编程 上下文管理器)

    记录python听课笔记 文章目录 记录python听课笔记 一,函数 1.介绍python里的函数 2.用户自定义函数 3.变量的作用域 4.参数的传递 5.参数的默认值 6.向函数内部批量传递数据 ...

  6. 《C++面向对象高效编程(第2版)》——2.29 泛化关系(is-a)

    本节书摘来自异步社区出版社<C++面向对象高效编程(第2版)>一书中的第2章,第2.29节,作者: [美]Kayshav Dattatri,更多章节内容可以访问云栖社区"异步社区 ...

  7. 《C++面向对象高效编程(第2版)》——2.20 什么是多线程安全类

    本节书摘来自异步社区出版社<C++面向对象高效编程(第2版)>一书中的第章,第2.20节,作者: [美]Kayshav Dattatri,更多章节内容可以访问云栖社区"异步社区& ...

  8. 《C++面向对象高效编程(第2版)》——2.30 has-a关系的重要性

    本节书摘来自异步社区出版社<C++面向对象高效编程(第2版)>一书中的第2章,第2.30节,作者: [美]Kayshav Dattatri,更多章节内容可以访问云栖社区"异步社区 ...

  9. 《C++面向对象高效编程(第2版)》——导读

    前言 C++面向对象高效编程(第2版) 面向对象软件开发已逐渐成为开发软件的首选.优秀的面向对象软件开发人员.设计人员.系统架构师对其需求与日俱增.要想成为一名成功的面向对象编程(OOP)人员必须忘却 ...

  10. 《C++面向对象高效编程(第2版)》——3.13 采用语义

    本节书摘来自异步社区出版社<C++面向对象高效编程(第2版)>一书中的第3章,第3.13节,作者: [美]Kayshav Dattatri,更多章节内容可以访问云栖社区"异步社区 ...

最新文章

  1. 破解自动机器学习的黑匣子
  2. 【Python】20个Pandas数据实战案例,干货多多
  3. 力扣69-x的平方根(解决一个问题:我的答案和题解很像,但是为什么过不了?C++、Java版)
  4. UE4 移动平台游戏开发
  5. 西门子s300编程实例_几个西门子plc编程实例图解(含程序应用实例)
  6. unity 摄像机导入 3dmax 带fov
  7. 如何删除下一页分节符_Word中批量删除分节符的方法
  8. 简单抽样技术——样本均值是总体均值的无偏估计
  9. IE打开网页默认为英文
  10. 网管、桌面运维、技术支持 有出路吗
  11. MATLAB自带分类模型APP——classification learner的使用
  12. 抖音如何进行广告的投放
  13. canvas 烟花特效
  14. 高级篇Docker复杂安装详说
  15. Linux文件搜索命令find、which和whereis应用
  16. web漏洞扫描器原理_【技术分享】漏洞扫描技巧篇Web 漏洞扫描器
  17. 基于MATLAB的DTMF信号的仿真分析
  18. opencv 将两张图片显示到一幅图片中
  19. Redis 未授权访问漏洞与getshell(附getshell检测工具)
  20. “吾道一以贯之”:华为Petal One的新格局

热门文章

  1. SmartUpload文件上传
  2. 技术揭秘QQ空间”自动转发不良信息
  3. 卷积码主要是对抗_采用卷积编码的原因和优势 浅析卷积码之特点
  4. 局域网、城域网、广域网、国际互联网(internet)
  5. Latex:IEEE Trans期刊Latex模板下载
  6. ipv6一致性测试(IPv6 Specification)内核修改
  7. 在线视频下载10个妙招方法大全
  8. 卸载软件时,出现解压缩支持文件时出错,灾难性故障--转载
  9. 阿里云Ubuntu系统部署K8s集群
  10. 口腔科的固定修复计算机辅助设计收,3D打印技术在口腔种植修复中的应用进展...