从活字印刷术的角度理解面向对象编程

  《大话设计模式》开头从活字印刷术的例子讨论面向对象的好处,个人觉得非常形象。活字印刷术主要体现了面向对象的如下几点:

  1. 可维护:修改的话只需要修改某一个字;

  2. 可复用:别的字可以重新拿来用;

  3. 可扩展:如果要加字,只需要刻新字;

  4. 灵活性好:横排竖排都可以。

  通过封装、继承、多态把程序的耦合度降低,传统印刷术的问题就在于把所有的字都刻在同一版面上造成耦合度太高所致,用设计模式是的程序更加的灵活,容易修改,并且易于复用。

时间: 2024-12-12 11:59:05

从活字印刷术的角度理解面向对象编程的相关文章

从一些简单代码实例彻底理解面向对象编程思想|OOP本质是什么?

从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说老牌黑客Rob Pike的评论. 先看这篇教程是怎么来讲述OOP的.它先给了下面这个问题,这个问题需要输出一段关于操作系统的文字:假设Unix很不错,Windows很差. 这个把下面这段代码描述成是Hacker Solution.(这帮人觉得下面这叫黑客?我估计这帮人真是没看过C语言的代码) 1 2 3 4

理解面向对象编程(二)-用例图及特征

Java语言是纯粹的面向对象的程序设计语言,这主要表现为Java完全支持面向对象的三种基本特征:继承.封装和多态.Java语言完全以对象为中心,Java程序的最小程序单位是类,整个Java程序由一个一个的类组成. Java完全支持使用对象.类.继承.封装.消息等基本概念来进行程序设计,允许从现实世界中客观存在的事物(即对象)出发来构造软件系统,在系统构造中尽可能运用人类的自然思维方式.实际上,这些优势是所有面向对象编程语言的共同特征.而面向对象的方式实际上由OOA(面向对象分析).OOD(面向对

深入浅出理解面向对象编程思想

C#是一门面向对象的编程语言.关于面向对象编程,首先是,面向对象编程英文 Object-Oriented Programming 简称 OOP.通俗来说,就是 针对对象编程的意思,面向对象中的对象,指一切皆是对象.面向对象——是把构成问题的事务分成各个对象,利用对象之间的关系来解决问题,面向对象因为把事务分成各个对象,所以更容易实现对象的封装,对象的复用.这也就是面向对象的几种特征(封装.继承.多态)这个后面再说. 为了更明白一点,举个例子: 比如要解决去某金融公司上班这个问题,采用面向对象实现

理解面向对象编程---C#控制台实现52张扑克牌的分法

52张牌随机分给4个玩家,要求每个玩家的牌用一个一维数组表示. 我们采用模拟大法.初始化一副扑克牌,洗牌,发牌. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication43 { class Program { enum Suit { Spade, Heart, Di

面向对象编程的弊端是什么? 深入理解面向对象

现时C++可以说是支持OOP范式中最为常用及高性能的语言.虽然如此,在C++使用OOP的编程方式在一些场合未能提供最高性能.[1]详细描述了这个观点,我在此尝试简单说明.注意:其他支持OOP的语言通常都会有本答案中提及的问题,C++只是一个合适的说明例子. 历史上,OOP大概是60年代出现,而C++诞生于70年代末.现在的硬件和当时的有很大差异,其中最大的问题是内存墙. 内存墙,指的是内存性能严重限制CPU性能发挥的现象.在过去的20多年中,处理器的性能以每年大约55%速度快速提升,而内存性能的

转载知乎上的一篇:“ 面向对象编程的弊端是什么?”

弊端是,没有人还记得面向对象原本要解决的问题是什么. 1.面向对象原本要解决什么(或者说有什么优良特性)似乎很简单,但实际又很不简单:面向对象三要素封装.继承.多态 (警告:事实上,从业界如此总结出这面向对象三要素的一刹那开始,就已经开始犯错了!). 封装:封装的意义,在于明确标识出允许外部使用的所有成员函数和数据项,或者叫接口. 有了封装,就可以明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者:而外部调用者也可以知道自己不可以碰哪里.这就提供一个良好的合作基础--或者说,只要接

面向对象编程其实很简单——Python 面向对象(初级篇)

在Python教学中发现,很多同学在走到面向对象编程这块就开始蒙圈了,为了帮助大家更好的理解面向对象编程并其能将其用到自己的开发过程中,特写此文. 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处. while True:

二维数组 面向对象编程的概念、 类、对象以及引用 和成员方法

1.二维数组(熟悉)1.1 基本概念 一维数组本质上就是一段连续的存储单元,用于存放多个类型相同的数据内容. 二维数组本质上就是由多个一维数组组成的数组,也就是说二维数组中的每个元素都是一维数组,而一维数组的每个元素才是具体数据内容. 1.2 二维数组的声明(1)语法格式 数据类型[][] 数组名称 = new 数据类型[行数][列数];如: int[][] arr = new int[2][5]; - 声明一个具有2行5列元素类型为int的二维数组 其中行下标的范围是:0 ~ 1: 其中列下标

简单理解OOP——面向对象编程

OOP:面向对象编程 一. 什么是OOP 面向对象编程:Object-oriented Programming,OOP,面向对象程序设计. 面向对象编程是一种计算机编程架构,他的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成. OOP使得程序更有重用性.灵活性和扩展性.OOP的核心思想是:封装.继承.多态(重点是类和对象). 不同于POP(面向过程编程)的以过程为中心的编程思想,面向对象编程的中心思想是通过调用对象来实现想要实现的目的. 面向对象的思想: 是一种更符合我们