【iOS基础学习随笔-1】-基于对象的程序设计
一、对象:
1、在基于对象的程序设计中,一个程序分解成若干个不同的对象,每个对象都有自己独有的能力。
2、一个生产线上的一个工位只负责做好一件事。如果生产出的汽车的车门没有漆好,那问题很可能出在负责上漆的对象中。
3、对象是用于组织代码的工具。一个对象就是一个箱子,封装了实现特定功能的代码。
4、多个对象也能合作完成同一项工作,有数不清的方法来安排他们合作。找出一种让各个对象能够有序而顺利进行合作的方法——一种构架(architecture)——是基于对象的程序设计中最具挑战性的工作之一。
二、消息和方法:
1、在基于对象的程序中,所有代码隶属于某个对象,除非让对象这么做,否则代码也不会执行。
2、在基于对象的程序中,给对象的命令称为消息(message)。要想让狗吃东西,我们相对像发送eat消息。消息发送机制是程序中所有行为的基础。由于程序完全由对象构成,因此他所有的行为都起源于对象向对象发送消息。
3、当对象需要发送消息给另一个对象时,它必须在适当的时间以适当的方式了解另一个对象的信息。确保对象相互了解是之前提到的构架设计的工作。
三、类和实例:
1、写出的所有代码都是放到类里面的。写出的方法一定属于某个类。不会特别地为某一只狗编程,而是写整个Dog类。
2、每一只单独的狗只能在程序运行过程中创建出来。属于任何类的独立的对象称为这个类的一个实例(instance)。基于某个类,创建一个实际存在的属于它的独立对象称为实例化(instantiate)这个类。
3、只要程序存在,类就存在。实例则是在程序运行中特意单独创建的。类定义什么方法,类的实例就有什么方法。创建实例后,就可以向它发送消息了。
四、类方法:
1、如果只能将消息发送给实例,那么在程序里无法创建任何实例。
2、类本身也是对象,可以向类发送消息。通过向类对象发送消息能完成的最重要的几项工作之一便是让它实例化自己。
3、不能让实例去实例化自己。
4、两种消息:向类发送的消息和向实例发送的消息。
两种方法:类方法(class method:能向类本身发送相应的消息)和实例方法(instance method:能向该类的实例发送相应的消息)。
类方法和实例方法通过 + 和 — 区分。
5、类方法一般(但不是专门)用做工厂方法——产生实例的方法。
五、实例变量:
1、实例具有类对象所没有的功能:实例变量(instance variable)。实例变量是属于实例的变量,也是类的一部分,定义在类里面。但在程序运行时,实例变量的值只属于一个一个实例。
2、实例是一种维持状态的机制,是一个储存数据的盒子。
六、基于对象的程序设计:
1、对象的本质:功能封装、状态维护。
【iOS基础学习随笔-1】-基于对象的程序设计的更多相关文章
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- PyQt(Python+Qt)学习随笔:窗口对象尺寸调整相关的函数resize、showMaximized、showNormal、showMinimized
resize(width,height) resize可以直接调整窗口的尺寸,调整效果类似于鼠标直接拉伸或缩小窗口,但窗口大小的最大值.最小值受窗口的sizePolicy.sizeHint.minim ...
- 零基础学习python_类和对象(36-40课)
今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ...
- ios 基础学习二
1:@property @synthesize 属性(类似java里的get set) 上面那个类原先的实现是这样: #import @interface Photo : NSObject { NS ...
- IOS开发学习笔记010-面向对象的三大特性
面向对象的三大特性 1.封装 2.继承 3.多态 一.封装 将类内部的属性保护起来,在外部不能直接访问,那么如果需要访问怎么办呢? OC提供了set方法来对成员变量进行访问 set方法 1.作用:提供 ...
- JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码
一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...
- ADO.NET基础学习 二(Command对象)
②command对象用来操作数据库.(三个重要的方法:ExecuteNonQuery(),ExecuteReader(),ExecuteScalar()) ⑴以update(改数据)为例,用到Exec ...
- 【C++基础学习】成员对象与对象数组
第一部分 对象成员与对象数组 从一个简单的例子开始说起,首先定义一个Coordinate的类,里面有两个公有的成员变量m_iX和m_iY,分别代表横坐标和纵坐标. 接下来,定义一个对象数组cood和一 ...
- Java基础学习-一切皆为对象
一切皆为对象 引用 String s; //s是引用,并不是对象. String s = "asdf" //创建一个引用的同时便进行初始化
随机推荐
- 菜鸟从零学编程(八)——将MyEclipse项目导入到Eclipse
最近由于种种原因,需要将以前用MyEclipse写的项目迁移到Eclipse中.但是当我将之前的项目import到Eclipse中后,发现根本不能运行.经过一番寻觅,终于让我找到了一种解决的办法.一起 ...
- 【Java编码准则】の #11不要使用Object.equals()来比較密钥值
java.lang.Object.equals()函数默认情况下是不能用来比較组合对象的,比如密钥值.非常多Key类没有覆写equals()函数,因此,组合对象的比較必须单独比較里面的各个类型以保证正 ...
- 使用AmplifyJS和JQuery编写更好更优雅的javascript事件处理代码
事件(或消息)是一种经常使用的软件设计模式.可以减少消息处理者和消息公布者的之间的耦合,比方J2EE里面的JMS规范.设计模式中的观察者模式(也叫公布/订阅模式).这对于javascript代码相同适 ...
- 【转】SoapUI5.0创建WebService接口模拟服务端
原文:http://blog.csdn.net/a19881029/article/details/26348627 使用SoapUI创建WebService接口模拟服务端需要接口描述文件 MathU ...
- 如何实现一个c/s模式的flv视频点播系统
一.写在前面 视频点播,是一个曾经很热,现如今依然很热的一项视频服务技术.本人最近致力于研究将各种视频格式应用于点播系统中,现已研究成功FLV, F4V, MP4, TS格式的视频点播解决方案,完全支 ...
- iOS 2D绘图详解(Quartz 2D)之阴影和渐变(Shadow,Gradient)
前言:这个系列写道这里已经是第五篇了,本文会介绍下阴影和渐变的基础知识,以及一些基本的Demo Code展示,应该还会有两篇,介绍下Bitmap绘制以及Pattern等知识. Shadow shado ...
- iOS开发——动画编程Swift篇&(四)CABasicAnimation动画
CABasicAnimation动画 //CABasicAnimation-不透明度 @IBAction func cabOpacity() { let animation = CABasicAnim ...
- iOS 在类实现定义中声明成员变量的怪异方式
WebGL 规范(WebGL Specification) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&quo ...
- MVC4数据注释与验证
Using Validation Annotations Required必须项验证属性 [Required] public string FirstName { get; set; } [Requi ...
- C# 之 HttpWebRequest类
提供 WebRequest 类的 HTTP 特定的实现. 继承层次结构 System.Object → System.MarshalByRefObject → System.Net.We ...