【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" //创建一个引用的同时便进行初始化
随机推荐
- Linux下高并发socket链接数测试
一.如何增大service进程的max open files ulimit -n 只能改小max open files,不能改大.需要按照以下步骤: 修改/etc/security/limits.co ...
- iOS 原生地图(MapKit、MKMapView)轨迹渐变
WechatIMG2.png 项目已接入高德地图,并且大部分功能已经实现好,但BOSS觉得iOS自带的地图效果更好...本着面向老板编程的思想,换之.还好,高德地图是在MapKit上封装的,大部分ap ...
- C++ Socket超时设置
用winsocket时,send(),recv()过程中有时由于网络状况等原因,收发不能预期进行,可以设置收发时限:int nNetTimeout = 1000; //1秒//发送时限setsocko ...
- js 处理url中文参数 java端接收处理
正常情况下当http请求中带有中文参数时,浏览器会自动对中文进行一次编码(按照当前页面的pageEncoding),java端容器会对接收到的参数自动进行一次转码,则request.getParame ...
- 堆排序-C语言实现
堆排序 堆排序是利用堆的性质进行的一种选择排序.下面先讨论一下堆. 1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]<=key[2i+1]&&Key[i ...
- MapReduce原理及其主要实现平台分析
原文:http://www.infotech.ac.cn/article/2012/1003-3513-28-2-60.html MapReduce原理及其主要实现平台分析 亢丽芸, 王效岳, 白如江 ...
- Golang学习 - unsafe 包
------------------------------------------------------------ 指针类型: *类型:普通指针,用于传递对象地址,不能进行指针运算. unsaf ...
- MR 的 mapper 数量问题
看到群里面一篇文章涨了贱识 http://www.cnblogs.com/xuxm2007/archive/2011/09/01/2162011.html 之前关注过 reduceer 的数量问题,还 ...
- Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation
程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...
- raspberry pi vpn
http://raspberrypihelp.net/tutorials/1-openvpn-server-tutorialhttp://www.jacobsalmela.com/setting-up ...