【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" //创建一个引用的同时便进行初始化
随机推荐
- OutputDebugString()
坚定的 Win32 开发者可能对 OutputDebugString() API 函数比較熟悉,它能够使你的程序和调试器进行交谈.它要比创建日志文件easy,并且全部“真正的”调试器都能使用它.应用程 ...
- [Angular2 Router] Using snapshot in Router
In the application, we have heros list, when click each hero, will redirect to hero detail view. Tha ...
- Java虚拟机工作原理具体解释
一.类载入器 首先来看一下java程序的运行过程. 从这个框图非常easy大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘其中.然后你在命令行中输入 javac YourClass ...
- 淘宝 印风 UDF
http://blog.csdn.net/zhaiwx1987/article/details/6902623
- 用iDSDT制作声显卡DSDT
已有 2299 次阅读2011-10-24 21:00 |个人分类:Mac| DSDT 快速增加积分秘笈! windows下!--------------------------------第一步.下 ...
- Robot Framework简介
概述 Robot Framework是一个通用的关键字驱动自动化测试框架.测试用例以HTML,纯文本或TSV(制表符分隔的一系列值)文件存储. 通过测试库中实现的关键字驱动被测软件.Robot Fra ...
- Emmet语法
子代:> 如:div>ul>li <div> <ul> <li> </li> </ul> </div> 兄弟: ...
- android 布局之滑动探究 scrollTo 和 scrollBy 方法使用说明
涉及到滑动,就涉及到VIEW,大家都知道,Android的UI界面都是由一个一个的View以及View的派生类组成,View作为基类,而常用的布局里面的各种布局就是它派生出来的ViewGroup的子类 ...
- iOS retain、strong、weak、assign
iOS retain.strong.weak.assign strong与weak是由ARC新引入的对象变量属性xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和a ...
- 【Linux/Ubuntu学习4】ubuntu 下面安装 vim 的问题
ubuntu 下面安装 vim 的问题 1.输入vim时,显示: 程序“vim”已包含在以下软件包中: * vim * vim-gnome * vim-tiny * vim-gtk * vim-nox ...