面向对象程序设计(OOP)1

2 篇文章 0 订阅
2 篇文章 0 订阅

在面试时如果面试官问你:“什么是对象,你怎样使用对象进行设计?”你该如何回答呢?我第一次碰到这个问题时(昨天= =)哑口无言,懵了…
我手上是有一本大名鼎鼎的《Java编程思想》的,当初看第一章对象导论的时候是直接草草浏览一遍而过,现在我决定再细细看一次,这篇博客权当笔记了。


1.抽象过程
我们写程序敲代码是为了什么,当然是为了解决一个问题

所有程序语言都提供抽象机制。可以认为,人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。——《Java编程思想》

所谓的“类型”是指“所抽象的是什么”
汇编语言是对底层机器的轻微抽象,包括“命令式语言”,这些抽象要求解决问题时要基于计算机的结构,而不是基于所要解决的问题的结构来考虑
比如一个计算器程序,要求输入两个数和运算符号,得到结果。

#include<stdio.h>
main()
{
    int a,b;
    printf("Input a,b:\n");
    scanf("%d%d",&a,&b);
    printf("a+b=%d\n",a+b);
}

这段代码是面向过程的,即用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程,是用计算机的方式来思考。我们是根据机器模型和实际待解决的模型建立起一对一的映射:两个数—>int a和b;符号运算—>a+b…..其余的用switch语句一大串case?

而面向对象是根据问题来描述/抽象问题。
那么什么是对象呢,万物皆为对象!比如我要描述“人”这个东西,人有什么?人有名字(属性/特性);人会干什么?人会抽烟喝酒打游戏(方法/行为);在这里我们抽象人这个东西都是根据人本身来的。那么什么是对象呢,我就是个对象啊,我的名字叫徐文升,抽烟=true,喝酒=true,打游戏=true,你看这里就出现了一个活生生的“人”,是通过实例化new了一个(Person person = new Person(){…..} 没有女朋友?new一个啊!),千千万万个“徐文升”(对象)就组成了人这个class。

最后放上AlanKay总结的面向对象语言的五个基本特性:

1)万物皆为对象
2)程序是对象的集合,它们通过发送消息来告知彼此所要做的
3)每个对象都有自己的由其他对象所构成的存储。换句话说,可以通过创建包含现有对象的包的方式来创建新类型的对象,比如上述中如果需要男人这个新类型,可以通过什么构建?
4)每个对象都拥有其类型。“每个对象都是某个类的一个实例(instance)
5)某一特定类型的所有对象都可以接受同样的消息。因为”男人“类型的对象同时也是”人”类型的对象,所以一个“男人”对象必然能接受发送给“人”的消息。这种可替代性(继承,多态)是OOP中最强有力的概念之一。

仅仅一张纸就包含了这么多深刻的知识,这本书有800多页…..今天就到这儿了,下一篇再见!面向对象程序设计(OOP)2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值