面向对象程序设计

09-01 面向对象编程

你离开我真会死。 提交于 2019-12-30 23:26:27
[TOC] 一 对象的概念 ”面向对象“的核心是“对象”二字,而对象的精髓在于“整合“,什么意思? 所有的程序都是由”数据”与“功能“组成,因而编写程序的本质就是定义出一系列的数据,然后定义出一系列的功能来对数据进行操作。在学习”对象“之前,程序中的数据与功能是分离开的,如下 # 数据:name、age、sex name='lili' age=18 sex='female' # 功能:tell_info def tell_info(name,age,sex): print('<%s:%s:%s>' %(name,age,sex)) # 此时若想执行查看个人信息的功能,需要同时拿来两样东西,一类是功能tell_info,另外一类则是多个数据name、age、sex,然后才能执行,非常麻烦 tell_info(name,age,sex) 在学习了“对象”之后,我们就有了一个容器,该容器可以盛放数据与功能,所以我们可以说:对象是把数据与功能整合到一起的产物,或者说”对象“就是一个盛放数据与功能的容器/箱子/盒子。 如果把”数据“比喻为”睫毛膏“、”眼影“、”唇彩“等化妆所需要的原材料;把”功能“比喻为眼线笔、眉笔等化妆所需要的工具,那么”对象“就是一个彩妆盒,彩妆盒可以把”原材料“与”工具“都装到一起 插图:对象与盒子 如果我们把”化妆“比喻为要执行的业务逻辑,此时只需要拿来一样东西即可

JavaScript 面向对象编程

不打扰是莪最后的温柔 提交于 2019-12-12 19:54:05
JavaScript 面向对象编程 面向对象介绍 什么是对象 (1) 对象是单个事物的抽象。 一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。 (2) 对象是一个容器,封装了属性(property)和方法(method)。 属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等)。 在实际开发中,对象是一个抽象的概念,可以将其简单理解为: 数据集或功能集 。 ECMAScript-262 把对象定义为: 无序属性的集合,其属性可以包含基本值、对象或者函数 。 严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都 映射到一个值。 提示:每个对象都是基于一个引用类型创建的,这些类型可以是系统内置的原生类型,也可以是开发人员自定义的类型。 什么是面向对象 面向对象不是新的东西,它只是过程式代码的一种高度封装,目的在于提高代码的开发效率和可维护性。 面向对象编程 —— Object Oriented Programming,简称 OOP ,是一种编程开发思想。

面向对象编程

有些话、适合烂在心里 提交于 2019-12-10 22:37:04
面向对象(OOP)与面向过程(POP)   二者都是一种思想,面向对象是相对于面向过程而言的,面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。   面向对象更加强调运用人类在日常的思维逻辑中采取的思想方法与原则,如抽象、分类、继承、聚合、多态等。 面向对象的三大特征   封装   继承   多态 java类及类的成员   java的代码组成是由很多个不同功能的类组成的。其中的class类是用来抽象的描述万事万物的。   class类描述万事万物是通过“属性”与“行为”来描述的。     属性:对应类中的成员变量。     行为:对应类中的成员方法。   理解:类就是java世界中的基本法则,就如同现实世界中的力的三定律,热的三定律一样。现实世界就是因为不同的定律来构成的,构成java世界中的基本法则被称为类。其中class类的作用是创建物体,也就是对象。class类创建对象通过两方面来创建,一个是对象的特征,一个是对象的行为模式。特征就是属性,代表着对象的基本信息,比如身高、体重、胖瘦等静态的信息。行为就是行为模式,比如跑、跳、飞等对象能够做的事。而代表属性的代码在class类中被称为成员变量,代表行为的代码在class类中被称为成员方法,也被称为函数。 面向对象的思想概述   类是规则,对象是实体。   理解:假如对象是一辆车

面向对象编程的设计原则

十年热恋 提交于 2019-12-08 23:07:33
面向对象的基本设计原则(SOLID) 1.单一职能原则(SRP-Single responsibility principle) 描述 一个类、接口或方法只负责一项职责(只有一个改变的原因) 优点 可以降低类的复杂度、类之间的耦合度 便于扩展、复用和维护,提高代码可读性 降低变更引起的风险 应用 Entity、Biz、Dao、Control 说明 1.一般通过多接口(Interface)的形式进行职能划分2.要注意职能扩散 2.开放-封闭原则(OCP-Open Closed Principle) 描述 类、模块等对于扩展是开放的(Open for extension) 对于修改是封闭的(Closed for modification) Software entities like classes,modules and functions should be open for extension but closed for modifications. 分类 梅耶开闭原则(类的继承) 多态开闭原则(抽象化接口实现) 优点 增强系统的稳定性、可扩展性、可维护性 提高代码的复用性 说明 1.通过接口和抽象类对扩展进行约束 2.引用对象、参数类型尽量使用接口或抽象类 3.接口或抽象类尽量不修改(可通过增加新的接口或抽象类完成扩展) 4.使用元数据控制模块(例如Spring的控制反转)

面向对象编程基础

我的梦境 提交于 2019-12-06 21:19:25
一 编程的分类: 1 分类 1 面向过程编程 以指令为核心:围绕“正在发生什么”进行编写 面向过程:程序= 算法+ 数据结构 面向过程编程:程序具有一系列线性步骤,主体思想是代码作用于数据,以指令为核心,核心是设计算法, 2 面向函数的编程 3 面向对象的编程 2 面向对象编程 面向对象编程--object oriented programming ,简称OOP,把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数 面向过程把函数继续切分称为子函数,来降低系统的复杂度。 面向对象编程(OOP) 程序 = 指令 + 数据/算法 + 数据结构 以数据为核心: 围绕“将影响谁”进行编写 面向对象编程(OOP):围绕数据以及为数据严格定义的接口来组织程序,用数据控制对代码的访问,面向数据,以及能够对这些数据采取的操作进行,代码执行过成,不能跳过数据 面向对象编程的核心概念: 所有编程语言的最终目的都是提供一种抽象方法 在机器模型(“解空间”或“方案空间”)与实际解决问题的问题模型(“问题空间”)之间,程序员必须建立一种联系 将问题空间中的元素以及他们在解空间中的标识物抽象为对象,并允许通过问题来描述问题而不是通过方案来描述问题 可以把实例(某个类的实例)想象成一种新型变量,他保存这数据,但可以对自身数据执行操作,实例可以对自身数据做操作 二 类和实例概念 1 类:

面向过程编程&面向对象编程

淺唱寂寞╮ 提交于 2019-12-06 14:36:00
面向过程编程 Procedure Oriented Programming C语言是面向过程编程的,面向过程编程主要使用顺序、条件选择、循环三种基本结构来编写程序。 顺序:按照时间轴顺序完成每个处理; 条件选择:根据条件的成立与否执行不同的条件分支; 循环:根据一定的条件反复执行同样的代码; 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 例如:洗衣机的洗衣功能:放水、洗涤、脱水、打干,按照一定的顺序执行功能:放水->洗涤->脱水->放水->洗涤->脱水->打干。 在早期计算机配置低、内存小为了节省内存空间,大都采用面向过程编程(以时间换空间)。 面向对象编程 Object Oriented Programming 面向对象编程语言:Objective-C、C++、Java 面向对象是一种编程方式,满足面向对象编程的语言,一般会提供类、封装、继承、多态等语法和概念来辅助我们进行面向对象编程。 所谓的面向对象就是将我们的程序模块化、对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法封装到一个类里面,然后创建实例对象,以对象作为程序的基本模块来进行软件的分析、设计和开发的一种思考方法。 面向对象的三大特征:继承、封装、多态 1. 继承 继承:A类继承B类,我们通常称A类为B类的子类,被继承的B类为A类的父类

设计模式之美学习(四):面向对象相比面向过程有哪些优势?面向过程真的过时了吗?

柔情痞子 提交于 2019-12-06 03:28:31
除了面向对象之外,被大家熟知的编程范式还有另外两种,面向过程编程和函数式编程。面向过程这种编程范式随着面向对象的出现,已经慢慢退出了舞台,而函数式编程目前还没有被广泛接受。 在工作中,很多人搞不清楚面向对象和面向过程的区别,总以为使用面向对象编程语言来做开发,就是在进行面向对象编程了。而实际上,他们只是在用面向对象编程语言,编写面向过程风格的代码而已,并没有发挥面向对象编程的优势。这就相当于手握一把屠龙刀,却只是把它当作一把普通的刀剑来用,相当可惜。 什么是面向过程编程与面向过程编程语言? 我们可以对比着面向对象编程和面向对象编程语言这两个概念,来理解面向过程编程和面向过程编程语言。还记得之前是如何定义面向对象编程和面向对象编程语言的吗?让我们一块再来回顾一下。 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。 类比面向对象编程与面向对象编程语言的定义,对于面向过程编程和面向过程编程语言这两个概念,给出下面这样的定义。 面向过程编程也是一种编程范式或编程风格。它以过程(可以为理解方法、函数、操作)作为组织代码的基本单元,以数据(可以理解为成员变量、属性

设计模式之美学习(四):面向对象相比面向过程有哪些优势?面向过程真的过时了吗?

强颜欢笑 提交于 2019-12-06 03:28:25
除了面向对象之外,被大家熟知的编程范式还有另外两种,面向过程编程和函数式编程。面向过程这种编程范式随着面向对象的出现,已经慢慢退出了舞台,而函数式编程目前还没有被广泛接受。 在工作中,很多人搞不清楚面向对象和面向过程的区别,总以为使用面向对象编程语言来做开发,就是在进行面向对象编程了。而实际上,他们只是在用面向对象编程语言,编写面向过程风格的代码而已,并没有发挥面向对象编程的优势。这就相当于手握一把屠龙刀,却只是把它当作一把普通的刀剑来用,相当可惜。 什么是面向过程编程与面向过程编程语言? 我们可以对比着面向对象编程和面向对象编程语言这两个概念,来理解面向过程编程和面向过程编程语言。还记得之前是如何定义面向对象编程和面向对象编程语言的吗?让我们一块再来回顾一下。 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。 类比面向对象编程与面向对象编程语言的定义,对于面向过程编程和面向过程编程语言这两个概念,给出下面这样的定义。 面向过程编程也是一种编程范式或编程风格。它以过程(可以为理解方法、函数、操作)作为组织代码的基本单元,以数据(可以理解为成员变量、属性

设计模式之美学习(二):到底什么是面向对象?

二次信任 提交于 2019-12-06 03:26:41
提到面向对象,相信很多人都不陌生,随口都可以说出面向对象的四大特性:封装、抽象、继承、多态。实际上,面向对象这个概念包含的内容还不止这些。 什么是面向对象编程和面向对象编程语言? 面向对象编程的英文缩写是 OOP ,全称是 Object Oriented Programming 。对应地,面向对象编程语言的英文缩写是 OOPL ,全称是 Object Oriented Programming Language 。 面向对象编程中有两个非常重要、非常基础的概念,那就是类( class )和对象( object )。这两个概念最早出现在 1960 年,在 Simula 这种编程语言中第一次使用。而面向对象编程这个概念第一次被使用是在 Smalltalk 这种编程语言中。 Smalltalk 被认为是第一个真正意义上的面向对象编程语言。 什么语言才算是面向对象编程语言呢?如果非得给出一个定义的话,可以用下面两句话来概括。 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石。 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。 一般来讲,面向对象编程都是通过使用面向对象编程语言来进行的,但是,不用面向对象编程语言

设计模式之美学习(五):哪些代码设计看似是面向对象,实际是面向过程的?

牧云@^-^@ 提交于 2019-12-06 03:26:36
常见的编程范式或者说编程风格有三种,面向过程编程、面向对象编程、函数式编程,而面向对象编程又是这其中最主流的编程范式。现如今,大部分编程语言都是面向对象编程语言,大部分软件都是基于面向对象编程这种编程范式来开发的。 不过,在实际的开发工作中,总以为把所有代码都塞到类里,自然就是在进行面向对象编程了。实际上,这样的认识是不正确的。有时候,从表面上看似是面向对象编程风格的代码,从本质上看却是面向过程编程风格的。 哪些代码设计看似是面向对象,实际是面向过程的? 在用面向对象编程语言进行软件开发的时候,我们有时候会写出面向过程风格的代码。有些是有意为之,并无不妥;而有些是无意为之,会影响到代码的质量。 1. 滥用 getter 、 setter 方法 它违反了面向对象编程的封装特性,相当于将面向对象编程风格退化成了面向过程编程风格。通过下面这个例子来给你解释一下这句话。 public class ShoppingCart { private int itemsCount; private double totalPrice; private List<ShoppingCartItem> items = new ArrayList<>(); public int getItemsCount() { return this.itemsCount; } public void