一、对象:

  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】-基于对象的程序设计的更多相关文章

  1. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  2. PyQt(Python+Qt)学习随笔:窗口对象尺寸调整相关的函数resize、showMaximized、showNormal、showMinimized

    resize(width,height) resize可以直接调整窗口的尺寸,调整效果类似于鼠标直接拉伸或缩小窗口,但窗口大小的最大值.最小值受窗口的sizePolicy.sizeHint.minim ...

  3. 零基础学习python_类和对象(36-40课)

    今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ...

  4. ios 基础学习二

    1:@property  @synthesize 属性(类似java里的get set) 上面那个类原先的实现是这样: #import @interface Photo : NSObject { NS ...

  5. IOS开发学习笔记010-面向对象的三大特性

    面向对象的三大特性 1.封装 2.继承 3.多态 一.封装 将类内部的属性保护起来,在外部不能直接访问,那么如果需要访问怎么办呢? OC提供了set方法来对成员变量进行访问 set方法 1.作用:提供 ...

  6. JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

    一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...

  7. ADO.NET基础学习 二(Command对象)

    ②command对象用来操作数据库.(三个重要的方法:ExecuteNonQuery(),ExecuteReader(),ExecuteScalar()) ⑴以update(改数据)为例,用到Exec ...

  8. 【C++基础学习】成员对象与对象数组

    第一部分 对象成员与对象数组 从一个简单的例子开始说起,首先定义一个Coordinate的类,里面有两个公有的成员变量m_iX和m_iY,分别代表横坐标和纵坐标. 接下来,定义一个对象数组cood和一 ...

  9. Java基础学习-一切皆为对象

    一切皆为对象 引用 String s; //s是引用,并不是对象. String s = "asdf" //创建一个引用的同时便进行初始化

随机推荐

  1. Android 使用 TableLayout 布局拉伸宽度

    转自:http://www.cnblogs.com/ghj1976/archive/2011/04/21/2023850.html 布局文件 <?xml version="1.0&qu ...

  2. Cocos2d-html5 笔记2: director

    今天看了cocos2d-html5代码里面的Director. 最简单的框架 先抛开cocos2d的框架不说,对于一个游戏来说,基本的逻辑框架还是很简单的,首先初始化的时候注册mouse, touch ...

  3. IOS文件存储小结

    转自:http://tyragain.lofter.com/post/84706_c1503 首选项设置存储 NSUserDefaults 以及通过它控制的SettingBundle  NSUserD ...

  4. SimpleUrlHandlerMapping 处理器映射的配置--转

    http://blog.csdn.net/rainier001/article/details/6860491 <?xml version="1.0" encoding=&q ...

  5. Thrift CentOS安装和使用

    Thrift是Apache的一个开源的跨语言服务开发框架,它提供了一个代码生成引擎来构建服务,支持C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Coc ...

  6. BootStrap2学习日记21---消息提示

    <p><a href="#" title="中国(China),位于东亚,是一个以华夏文明为主体.中华文化为基础,以汉族为主要民族的统一多民族国家,通用 ...

  7. linux环境中 对tomcat配置java环境

    JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m -XX:MaxPermSize=512m" JAVA_HOME="/weblogic1 ...

  8. 自定义 404 与 500 错误页面,URL 地址不会重定向(一)

    对于 404 与 500 错误发生时,我们希望自己定义一个更加人性化的页面. 例子 当访问下面这个地址时: http://localhost/aaaa/bbb/ccc/ddd/eee/fff/ggg ...

  9. [Java,MVC] Eclipse下搭建Spring MVC

    转自:http://blog.csdn.net/blue_jjw/article/details/8752466 一.新建Dynamic Web Project 一个web工程最基本的,只看3个地方, ...

  10. 重构7-Rename(method,class,parameter)

    这是我最常用也是最有用的重构之一.我们对方法/类/参数的命名往往不那么合适,以至于误导阅读者对于方法/类/参数功能的理解.这会造成阅读者的主观臆断,甚至引入bug.这个重构看起来简单,但却十分重要. ...