读书笔记day01:Java编程思想

本文探讨了面向对象编程(OOP)的基础,包括Alan Kay提出的五个核心特性:万物皆对象、消息传递、类与实例、继承与可替代性。通过银行出纳员问题实例,解释了如何创建抽象数据类型(类)和对象接口,以及如何在实际编程中运用这些概念。
摘要由CSDN通过智能技术生成

一、面向对象程序设计

  • Object-oriented Programming
  • OOP

二、基本特性

1、Alan Kay

Alan Kay 曾经总结了第一个成功的面向对象语言、同时也是 Java 所基于的语言之一的Smalltalk 的五个基本特性 , 这些特性表现了一种纯粹的面向对象程序设计方式 :

  • 万物皆为对象
    可以将对象理解为一个奇特的变量,不仅可以存储数据,还可以要求它在自身上执行操作
  • 程序是对象的集合 , 它们通过发送消息来告知彼此所要做的
    这里的消息可以理解为对某个对象的方法调用请求
  • 每个对象都有自己的由其他对象所构成的存储
    可以创建包含现有对象的包的方式来创建新类型的对象
  • 每个对象都拥有其类型
    每个对象都是某个类(class)的一个实例(instance)
    每个类之间的最主要区别为“可以发送什么样的消息给它”
  • 某一特定类型的所有对象都可以接收同样的消息
    这种可替代性(substitutability)是OOP中做强有力的概念之一

2、Booch

Booch 对对象提出了一个更加简洁的描述 : 对象具有状态、行为和标识

  • 每一个对象都可以拥有内部数据 ( 它们给出了该对象的状态 )
  • 每一个对象都可以拥有方法 ( 它们产生行为 )
  • 每一个对象都可以唯一地与其他对象区分开来 , 具体说来 , 就是每一个对象在内存中都有一个唯一的地址

三、每个对象都有一个接口

所有的对象都是唯一的 , 但同时也是具有相同的特性和行为的对象所归属的类的一部分。

1、银行出纳员问题

  • 在银行出纳员问题中 , 有出纳、客户、账户、交易和货币单位等许多“对象”。
  • 在程序执行期间具有不同的状态而其他方面都相似的对象会被分组到对象的类中 ,这就是关键宇 class 的由来。
  • 创建抽象数据类型 ( 类 ) 是面向对象程序设计的基本概念之一。
  • 每个类的成员或元素都具有某种共性 , 每个账户都有结余金频 , 每个出纳都可以处理存款请求等。同时 , 每个成员都有其自身的状态 ; 每个账户都有不同的结余金额 , 每个出纳都有自己的姓名。因此 , 出纳、客户、账户、交易等都可以在计算机程序中被表示成唯一的实体、这些实体就是对象、每一个对象都属于定义了特性和行为的某个特定的类。
  • 因为类描述了具有相同特性 ( 数据元素 ) 和行为(功能 ) 的对象集合 , 所以一个类实际上就是一个数据类型 , 例如所有浮点型数字具有相同的特性和行为集合。
  • 一旦类被建立 , 就可以随心所欲地创建类的任意个对象 , 然后去操作它们 , 就像它们是存在于你的待求解问题中的元素一样。
  • 事实上 , 面向对象程序设计的挑战之一 , 就是在问题空间的元素和解空间的对象之间创建一对一的映射。

2、怎样才能获得有用的对象昵 ?

  • 必须有某种方式产生对对象的请求 , 使对象完成各种任务 , 如完成一笔交易、在屏幕上画图、打开开关等等。每个对象都只能满足某些请求 , 这些请求由对象的接口 (interface) 所定义 , 决定接口的便是类型。
  • 接口确定了对某一特定对象所能发出的请求。但是 , 在程序中必须有满足这些请求的代码。这些代码与隐藏的数据一起构成了实现。从过程型编程的观点来看 , 这井不太复杂。在类型中 ,每一个可能的请求都有一个方法与之相关联 , 当向对象发送请求时 , 与之相关联的方法就会被调用。此过程通常被概括为 : 向某个对象“发送消息“( 产生请求 ), 这个对象便知道此消息的目的 , 然后执行对应的程序代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kangkang康米

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值