【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" //创建一个引用的同时便进行初始化
随机推荐
- UVA 12901 Refraction 几何/大雾题
Refraction Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...
- linux 文件系统的管理 (硬盘) 工作原理
一.系统在初始化时如何识别硬盘 1.系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16 ...
- oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT_数据库的几种锁
问题如下: SQL> conn scott/tiger@vm_databaseConnected to Oracle Database 11g Enterprise Edition Releas ...
- C++面试题:list和vector有什么区别?
原文:http://genwoxuevc.blog.51cto.com/1852984/503337 C++面试题:list和vector有什么区别?考点:理解list和vector的区别出现频率:★ ...
- Java去除掉HTML里面所有标签的两种方法——开源jar包和自己写正则表达式
Java去除掉HTML里面所有标签,主要就两种,要么用开源的jar处理,要么就自己写正则表达式.自己写的话,可能处理不全一些自定义的标签.企业应用基本都是能找开源就找开源,实在不行才自己写…… 1,开 ...
- LeetCode24 Swap Nodes in Pairs
题意: Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1-> ...
- maven-使用assembly自定义打包
用maven管理项目引用依赖很方便,但是打包的时候如果是web包还好,会直接把依赖的jar包打到lib目录中,如果是jar包的话,依赖默认是不打入进去的 这样如果运行环境中没有依赖的jar包,就麻烦了 ...
- IIS 之 HTTP 错误 500.19(无法访问请求页面,因为该页的相关配置数据无效)
HTTP 错误 500.19- Internal Server Error 错误解决方法,碰到这个问题的原因有很多,大家可以参考下,看属于哪种情况. 刚在本机部署了一个WebService测试,浏览的 ...
- A + B Again
Problem Description There must be many A + B problems in our HDOJ , now a new one is coming.Give you ...
- Spring mvc编码配置
Spring3 MVC也带有自己的编码: jar包:org.springframework.web-3.0.0.RELEASE.jar 只需要在web.xml配置即可: <!-- spring ...