面向对象

1.4 面向对象

柔情痞子 提交于 2020-03-01 09:41:10
面向对象 面向对象是一种以“对象”作为中心的编程思想,其中对象的含义可以理解为“存在的东西”。 与面向过程的方法相比,面向对象不再局限于计算机的机器本质,而更加侧重于对现实世界的模拟。面向过程的方法中,有一套设计严格的操作顺序,有一个类似中央控制器的角色来进行统一调度;而面向对象的方法中,并没有明确的中央控制的角色,也不需要指定严格的操作顺序,而是设计了很多对象,并且指定了这些对象需要完成的任务,以及这些对象如何对外界的刺激做出反应。 如果说面向过程像一条流水生产线,那么面向对象就像是一个足球队。没有哪个人能够在一场比赛开始的时候,就精确指定每个队员的每一次跑动,每一次出脚,每一次传球。。。。。。而只能指定队员的角色(前锋、中场、后卫、门将),然后由队员门自己根据情况做出反应。所以世界上有两个一样的生产线,但绝对不会存在两场一模一样的比赛。 面向对象这种对现实世界的模拟的思想,其本质上就是“人的思想”,这是一个质的飞跃,意味着程序员可以按照人的思想来观察、分析、设计系统。 什么叫做“人的思想”?你可以放下书本,关上电脑,站起来,环顾四周,你看到的是什么?可能是你的同事、桌子、墙、电脑、花盆;或者是电话、窗子、书本。。。。。。怎么样,这些都是“对象”吧?除了观察目标聚焦于“对象”外,当我们观察人类世界各种事情的运作的时候,我们也不知不觉的聚焦于“对象”。例如,一个公司的运作,由董事长

Java面向对象--构造器(构造方法)

对着背影说爱祢 提交于 2020-03-01 01:00:37
构造器就是和类名相同但无返回类型的方法。用于当前或某一对象的实例化,并将当前或某一对象返回。要得到一个类的实例时,往往是要运行其构造函数的。本篇博客介绍Java面向对象中的构造器(构造方法的用法)。 构造器的概述 ☃ 构造器是Java学习中很重要的一个概念,构造器可以提供许多特殊的方法,构造器作为一种方法,负责类中成员变量(域)的初始化。实例构造器分为缺省构造器和非缺省构造器。 修饰符 类名(参数列表){ 初始化语句; } 构造器的特征 ☃ 它具有与类相同的名称 ☃ 它不声明返回值类型。(与声明为void不同,void也算是一种返回值类型,空返回类型) ☃ 不能被static、final、synchronized、abstract、native修饰,可以被权限修饰符(public,protected,default(缺省)、private)修饰,不能有 return语句返回值 构造器的作用 ☃ 构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。 ➥ 构造器是一种特殊的方法,所以是可以重载的 构造器的分类 根据参数不同,构造器可以分为如下两类: ☃ 隐式无参构造器(系统默认提供) ☃ 显式定义一个或多个构造器(构造器的重载) 注意: ➥ Java 语言中,每个类都至少有一个

面向对象之类与实例、类与继承

こ雲淡風輕ζ 提交于 2020-02-29 10:45:59
一、类与实例: 1、类的声明: /*类的声明*/ function Animal1(){ this.name = 'name'; } /*ES6中 calss 的声明*/ class Animal2{ constructor(){ this.name = name; } } 2、生成实例: console.log(new Animal1(),new Animal2()); /* *打印结果为 * * Animal1{name: 'name'} * Animal2{name: ''} * */ 二、类与继承: 实现继承的几种方式:    1、借助构造函数实现继承(原理是在子类中改变父级this的指向,缺点是只能部分继承, 不能继承父类原型上的方法); function Parent() { this.name = "parent"; this.list = [1, 2] } Parent.prototype.say = "Hi"; function Son() { Parent.call(this); this.type = "12"; } console.log(new Parent(),new Son()); console.log(new Son().say); //报错  2、借助原型链实现继承(缺点是原型链上的对象是共用的,改变某个对象的属性,   

C++ Primer 第十五章 面向对象程序设计 15.2 定义基类和派生类 练习和总结

a 夏天 提交于 2020-02-28 22:43:38
基类和派生类是相对的概念,如果类A继承自类B,则类B相对于类A是基类,类A相对于类B是派生类。 15.2 定义基类和派生类 在定义基类时,我们需要将析构函数和需要子类重写的函数定义为 虚函数 , 因为当我们使用指针或者引用调用虚函数时,会根据实际绑定的动态类型来调用基类或者子类的函数。 为什么要这样做? 在定义派生类的时候解释。 之前在修饰类的成员时,我们只使用了private和public,这里还有一个protected用来修饰成员,表示派生类可以直接访问,但是其他用户(类,函数)不能对修饰为protected的成员访问。 15.2.1 定义基类 练习 15.1 使用virtual关键字修饰的函数时虚函数 15.2 用protected修饰的成员,使用类的用户不能直接访问,但是继承该类的派生类可以访问。 使用private修饰的成员,使用这个类的用户不能直接访问,继承该类的派生类也不可以直接访问。 15.3 class Quote { public : Quote ( ) = default ; virtual ~ Quote ( ) = default ; Quote ( const string & s , double p ) : bookNo ( s ) , price ( p ) { } ; virtual double net_price ( std :: size

Java基础--面向对象_类的继承

♀尐吖头ヾ 提交于 2020-02-28 21:47:42
最基本的作用:代码重用 语法: [修饰符列表] class 子类名 extends 父类名{ 类体 } 类和类之间只支持单继承,默认继承object类 子类会继承父类所有数据,包括私有的。但不能继承构造方法 在子类中无法直接访问父类中的私有数据,但是可以间接访问 来源: CSDN 作者: 立flag的咸鱼 链接: https://blog.csdn.net/weixin_41988224/article/details/104564048

面向对象设计(OOD)五大基本原则

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-28 00:14:04
SOLID的5原则: S = 单一职责原则 Single Responsibility Principle O = 开放闭合原则 Opened Closed Principle L = Liscov替换原则 Liscov Substitution Principle I = 接口隔离原则 Interface Segregation Principle D = 依赖倒置原则 Dependency Inversion Principle 单一职责原则: 引起类变化的因素永远不要多于一个 开放闭合原则: 软件实体 ( 类 , 模块 , 函数等等 ) 应当对扩展开放,对修改闭合 里氏代换原则: 子类型必须能够替换它们基类型,或者说 使用基类引用的函数必须能使用继承类的对象而不必知道它 接口隔离原则: 客户端不应该被迫依赖于它们不用的接口(防止胖接口) 依赖倒置原则: 高层模块不应该依赖底层模块,两者都应该依赖其抽象 除SOLID原则外还有很多其它的面向对象原则。如: “组合替代继承”:这是说相对于继承,要更倾向于使用组合; “笛米特法则”:这是说”你的类对其它类知道的越少越好”; “共同封闭原则”:这是说”相关类应该打包在一起”; “稳定抽象原则”:这是说”类越稳定,越应该由抽象类组成”; 来源: https://www.cnblogs.com/fengye87626/archive

C#面向对象(五大基本原则 )

青春壹個敷衍的年華 提交于 2020-02-27 23:28:52
五大原则 单一职责原则(SRP) 开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP) 一、单一职责原则SRP(Single Responsibility Principle)   是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。 二、开放封闭原则OCP(Open-Close Principle)   一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。 三、里氏替换原则(the Liskov Substitution Principle LSP)   子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。 四、依赖倒置原则(the Dependency Inversion Principle DIP)   具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类:

从零开始,计算机编程语言简史

爷,独闯天下 提交于 2020-02-24 23:26:33
计算机语言总的来说分为机器语言,汇编语言,高级语言三大类,而这三种语言也恰恰是计算机语言发展历史的三个阶段。其中,汇编语言几乎成为了每个科班学生的噩梦。 我希望从计算机语言编程语言的发展历史中,了解每一种编程语言在哪个历史时代背景中独特的魅力、它为什么而诞生、为什么能够推动计算机科学界的前进。 同时,我更愿望从这些编程预言的发展历史中,找到编程语言们的 核心特性与共性 ,深度理解编程语言的 底层原理和实现思想 ,构建自己的编程语言 知识体系 。 文章目录 机器&汇编语言 高级语言的诞生 大佬来了:C语言 面向对象 C++ Java Python 先来一波高级编程语言发展图: 机器&汇编语言 1946年2月14日 ,世界上第一台计算机 ENAC诞生 ,使用的是最原始的穿孔卡片。这种卡片上使用的语言是只有 专家 (机器)才能理解的语言,与人类语言差别极大,这种语言就称为机器语言。 其实,机器语言就是由0和1两种元素组成。所谓的 穿孔卡片 也就是一条纸带,上面充满了0和1的序列,ENAC就是通过读取这种序列,来实现计算的。机器语言也就成为了第一代计算机语言。 由于第一代计算机语言(机器语言)的特性(人类根本没法看懂),导致了许许多多的问题,例如,对于程序编程员的要求极高( 像我这种面向百度编程的人,就算了 );运算结果出错了,根本没法排除… 于是,汇编语言诞生了。

面向对象五大原则之一:单一职责原则(自我理解)

橙三吉。 提交于 2020-02-24 13:58:51
http://www.cnblogs.com/seacryfly/archive/2011/12/29/2305965.html 只有类对应的(唯一)职责(需求)的变更才会引起代码的重构。 The single responsibility principle states that every module or class should have responsibility over a single part of the functionality provided by the software , and that responsibility should be entirely encapsulated by the class. All its services should be narrowly aligned with that responsibility. Robert C. Martin expresses the principle as follows: [1] “ A class should have only one reason to change. ” 2.2 单一职责原则 2.2.1 引言 一个优良的系统设计,强调模块间保持低耦合、高内聚的关系,在面向对象设计中这条规则同样适用,所以面向对象的第一个设计原则就是:单一职责原则(SRP

面向对象的三大特征

南楼画角 提交于 2020-02-18 13:05:51
面向对象这个编程思想主要有三大特征,分别是:封装,继承和多态。 首先什么是封装呢? 是将累的状态信息隐藏在内部,不允许外部程序直接访问操作。换句话说也就是把类中的细节进行包装,对外提供定义好的接口。 那么封装有什么好处呢? 封装对实现细节进行隐藏,使用者需要通过规定的访问来访问数据,这样避免了使用者进行不合理的赋值操作 继承? 什么是继承,在生活中,你可能听说继承遗产啊,子承父业等词,和程序中其实差不多,继承是从已有的类中得到一些需要继承的信息创建新类的过程,提供继承信息的称为父类(超类,基类),接受继承信息的类称为子类(派生类)。 继承有什么好处? 继承使得系统在变化中有了延续性,同时继承也是封装过程中可变的因素。另外通过继承还可以缩小代码量。 多态? 多态是指允许不同的子类类型的对同意消息做出不同的行为。可以这么说把,同样的类型,接收到同样的条件,做出了不同的反馈。举一个例子:老师是父类,语文老师和数学老师都是他的子类,都是老师,当听到上课铃声想起,语文老师去上的语文课,而数学老师上的数学课。 多态的好处? 多态可以大量减少代码量 提高代码的维护性和扩展性 来源: https://www.cnblogs.com/mrluve/p/12325295.html