面向对象程序设计

64.面向对象编程

我是研究僧i 提交于 2020-04-07 20:40:01
目录 一、面向过程编程 二、面向对象编程 2.1 优点 2.2 缺点 2.3 应用场景 一、面向过程编程 详细见博客--面向过程思想: https://www.cnblogs.com/LWX-YEER/p/12577205.html 面向过程变成的核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么然后干什么…… 基于面向过程编程的思想编写程序好比在设计一条流水线,是一种机械式的思维方式。 优点:复杂的问题流程化、进而简单化 缺点:扩展性差 二、面向对象编程 你可以把你自己想象成如来佛祖,然后你想找四个人去取经,所以你就去找了四个人取经。你找来了四个普通人准备让他们去取经,但是这四个人不是猪八戒、也不是孙悟空……所以你给一个普通人加了一个猪耳朵、给了他九齿钉耙;给了另外一个普通人毛脸雷公嘴、给了他一根棍子……所以现在有了猪八戒、孙悟空、沙悟净和唐僧,而现在的这四个角色就是我们所讲的对象。 面向对象编程的核心是对象二字,对象是特征与技能的结合体。 基于面向对象编程的思想编写程序,就好比是在创造一个世界,你就是这个世界的上帝,是一种上帝式的思维方式。面向对象的程序设计并不是全部,对于一个软件质量来说,面向对象的程序设计只是用来解决扩展性 2.1 优点 优点 :可扩展性强,解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中

Delphi面向对象编程思想读书笔记3——理解对象

送分小仙女□ 提交于 2020-04-07 14:16:38
对象的本质 计算机内存常用的有两块,栈(stack)和堆(heap)。 对象的引用存储在栈中,栈中的变量是不需要由程序员手动去释放内存空间的。简单数据类型的值和对象的引用存储在栈中,对象存储在堆中。 查看创建对象所占用内存的大小,调用InstanceSize()方法,从TObject继承。 对象引用和类引用。对象是类的动态实例,对象总是被动态分配到堆上,一个对象引用就如同一个句柄或者一个指针。一个对象引用通常以一个变量的形式存在,也有函数或者属性返回值的形式。类引用类型是类的模板。类引用最普遍的使用是通过调用构造函数来生成该类的实例,也可以用引用类测试对象类型(is)或者将对象转换为特定类型(as)。 常用的参数床底机制分为值传递和引用传递(var)。 赋值操作符(:=)将一个对象的以用赋值给一个对象变量。Assign和AssignTo方法可以将对象属性进行赋值。 简单的数据类型(如Integer,Char,Record等)无论作为参数还是变量都是按值传递和使用的,通常称为值类型。对象变量是引用类型变量,分配一个对象引用给一个变量时,Delphi仅复制引用,而不是整个对象。 对象的生死 Delphi用Constructor声明一个构造函数Create,可在对象产生的时候调用。用Destructor声明一个析构函数Destroy,将在对象销毁的时候调用。 Destroy直接销毁对象

Delphi面向对象编程思想读书笔记3——理解对象

你。 提交于 2020-04-03 10:21:08
对象的本质 计算机内存常用的有两块,栈(stack)和堆(heap)。 对象的引用存储在栈中,栈中的变量是不需要由程序员手动去释放内存空间的。简单数据类型的值和对象的引用存储在栈中,对象存储在堆中。 查看创建对象所占用内存的大小,调用InstanceSize()方法,从TObject继承。 对象引用和类引用。对象是类的动态实例,对象总是被动态分配到堆上,一个对象引用就如同一个句柄或者一个指针。一个对象引用通常以一个变量的形式存在,也有函数或者属性返回值的形式。类引用类型是类的模板。类引用最普遍的使用是通过调用构造函数来生成该类的实例,也可以用引用类测试对象类型(is)或者将对象转换为特定类型(as)。 常用的参数床底机制分为值传递和引用传递(var)。 赋值操作符(:=)将一个对象的以用赋值给一个对象变量。Assign和AssignTo方法可以将对象属性进行赋值。 简单的数据类型(如Integer,Char,Record等)无论作为参数还是变量都是按值传递和使用的,通常称为值类型。对象变量是引用类型变量,分配一个对象引用给一个变量时,Delphi仅复制引用,而不是整个对象。 对象的生死 Delphi用Constructor声明一个构造函数Create,可在对象产生的时候调用。用Destructor声明一个析构函数Destroy,将在对象销毁的时候调用。 Destroy直接销毁对象

python面向对象编程

泪湿孤枕 提交于 2020-04-02 09:32:34
一,什么是面向对象编程 面向对象的程序设计的核心是对象 面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。 二,类和对象 python中一切皆为对象,数据类型的本质就是类。 在python中,用变量表示特征,用函数表示技能,因而具有相同特征和技能的一类事物就是‘类’,对象是则是这一类事物中具体的一个。 声明类: ''' class 类名: '类的文档字符串' 类体 ''' 类有两种作用:属性引用和实例化 属性引用(类名.属性) class Person: #定义一个人类 role = 'person' #人的角色属性都是人 def walk(self): #人都可以走路,也就是有一个走路方法 print("person is walking...") print(Person.role) #查看人的role属性 print(Person.walk) #引用人的走路方法,注意,这里不是在调用 实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征 class Person: #定义一个人类 role = 'person' #人的角色属性都是人 def __init__(self,name): self.name = name

Python面向对象编程 - 4

断了今生、忘了曾经 提交于 2020-03-06 22:27:39
特殊成员和魔法方法 Python中有大量类似__doc__这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有着非常重要的地位和作用,也是Python语言独具特色的语法之一! __init__ : 构造函数,在生成对象时调用 __del__ : 析构函数,释放对象时使用 __repr__ : 打印,转换 __setitem__ : 按照索引赋值 __getitem__: 按照索引获取值 __len__: 获得长度 __cmp__: 比较运算 __call__: 调用 __add__: 加运算 __sub__: 减运算 __mul__: 乘运算 __div__: 除运算 __mod__: 求余运算 __pow__: 幂 1.__doc__ 说明性文档和信息。Python自建,无需自定义。 class Foo: """ 描述类信息,可被自动收集 """ def func(self): pass # 打印类的说明文档 print(Foo.__doc__) 2.__init__() 实例化方法,通过类创建实例时,自动触发执行。 class Foo: def __init__(self, name): self.name = name self.age = 18 obj = Foo(jack') # 自动执行类中的 __init__ 方法 3.__module__和__class__ _

Java面向对象编程 -1

匆匆过客 提交于 2020-02-16 00:49:32
面向对象简介 C语言是面向过程开发的代表 C++ 或者Java 是面向对象的编程语言 所谓的面向过程指的是面对于一个问题的解决方案,更多的情况下是不会做出重用的设计思考的。 而面向对象的主要设计形式是 模块化设计 并且可以进行重用配置。在整个的面向对象的设计里面更多的情况下考虑的是标准。在使用的时候根据标准进行拼装。 面向对象三个主要特征: 封装性:内部的操作对外部而言不可见 当内部的操作都不可以直接使用的时候才是安全的; 继承性:在已有结构的基础上继续进行功能的扩充; 多态性:在继承性的基础上扩展而来的概念,指的是类型的转换处理。 在进行面向对象程序的开发之中一般还有三个步骤: OOA:面向对象分析 OOB:面向对象设计 OOP:面向对象编程。 来源: https://www.cnblogs.com/sakura579/p/12315057.html

面向对象和面向对象编程

流过昼夜 提交于 2020-02-10 20:26:04
一、 面向过程 (一)面向过程的特点 1. 分析解决步骤,使用函数一步步实现步骤 2. 以算法为核心 3. 自顶向下设计,最初就必须对问题深入了解 4. 大问题——>小问题来求解 5. 表现形式:使用函数作为划分程序的基本单位 6. 直接面向问题 (二)面向过程的优点 1. 易于掌握理解,符合人类的思维模式 2. 对需求明确、规模不大、变动较小的问题非常适合 (三)面向过程的缺点 1. 数据与操作分离,对数据与操作的修改非常困难 2. 数据安全得不到保证 3. 程序架构的依赖关系不合理 main();函数依赖于子函数,子函数又依赖于更小的函数 子函数实现细节, 一个函数是否成功就 依赖于这些细节,但这些细节又经常变化。 main();函数程序的核心逻辑依赖于外延的细节,一个细节上的变动会引起一系列变动,如果一个小细节出现问题,将会导致整个程序崩溃 4. 对需求不明确、规模大、变动大的问题非常不适合 二、面向对象 (一)面向对象的设计思想 确定该问题由那些事物组成,使用类模拟出该事物。 通过类间接解决问题 自下而上设计,从问题的一部分入手,一点点构建出整个程序 表现形式:用类来作为划分程序的基本单位 对需求明确、规模不大、变动较小的问题显得累赘 对需求不明确、规模大、变动大的问题非常不适合 三、 类与对象 (一)什么是类 1. 类:把一类事物的静态属性和动态可执行操作组合在一起 2.

接口与抽象类那点事

喜夏-厌秋 提交于 2020-02-08 20:36:20
也谈接口和抽象类区别 好象这是一个老生常谈的问题,最近有个学生问我他们的区别,于是我就又想起这个话题。 有不少的文章在描述这两者,但好象都没有怎么从初学者的浅显角度来看。 其实这两者有很多相识之处,当然也有很多不同之处。要理解它们,应该先从面向对象思想开始。面向对象思想里面,最基本的就是封装,继承和多态。所谓封装,说的小,方法(函数)也就是对一种操作的封装,说的大,用类来描述一个具体的对象。 那么在面向对象程序中应该说对封装还有一层新的定义,即将类的描述抽象化,也就是说描述类的外貌而不去考虑它的实际。 那么我们回过头来看抽象类,它必须被继承使用,描述的其实是一种继承关系,即"is a"的关系。类继承它,也就是说类拥有它所有抽象方法等,那么也就是类遵循了它所定义的规范。但是呢,这种规范是通过继承而来,类的发展必须依赖它的父类。 abstract class 工作 { abstract void 上班() } class 张三 : 工作 { } abstract class 工作 { abstract void 上班() } class 人: 工作 { } class 李四 : 人 { } 我们从这个例子中不难看出,张三和李四同样都遵循抽象工作的规范,都拥有上班这个方法,但是呢,他们的发展始终受到父类的影响。 当然,我这里只是从它们使用的角度来看,我们还能从他们设计角度度来看

面向过程编程和面向对象编程的区别

雨燕双飞 提交于 2020-01-19 17:42:43
面向过程编程和面向对象编程的区别 一、引言: 无论是哪种语言,我们最终的目的都是希望设计这个语言来解决我们现实生活需要解决的问题。当然,你也要明白,我们现实生活中出现的软件程序绝不是一个简单的1~100的这样的小算法程序,而是成百上千个这样的小算法集合在一个,共同构成了我们所需要的一个软件程序。 二、面向过程: 以面向过程的C语言为例。当我们面对一个问题时,我们更加侧重以正常人的逻辑思维来理解问题。 1)解决1~100的和 :定义一个循环来依次求累计求解各个数字的和 2)解决1-100和的同时也能解决1-200的和 :在1)的基础上或许我们会定义一个函数(Java里面称为方法)设置不同的参数来解决这样问题。 3)解决1~100和的同时还能解决100! :此时可能就需要设置两个不同的函数(Java里面叫做方法)来求解问题。 总结 :其实我们不难发现,C语言的求解问题,有点类似于那种你需要什么,我就给你解决什么的,你不需要的我就不管,即没有让事情本身没有太多的联系。 三、面向对象: 以面向过程的Java语言为例。当我们面对和C语言一样的问题时候,我们更加的侧重于谁来帮我们解决,而不是我自己去怎么解决的思路。(我最开始理解这句话的时候,是知其然不知其所以然的)我后来的理解就是强调了内在事物的本身联系。同样以上面的三个题目为例。 1)解决1-100的和 :不可否认

什么是面向对象编程

余生颓废 提交于 2020-01-12 23:45:19
什么是面向对象编程 本文关键字:面向对象、面向过程、面向过程编程语言、面向对象编程语言 一、浅说编程 说到编程,对于初学者来讲,可能第一想到的就是敲键盘,写代码,做游戏,甚至于会联想到软件破解、网络***。另一方面,在学了一些编程的相关知识以后,一个最明显的感觉就是:这东西有什么用?为什么我明明听懂了却还是解决不了实际的问题,甚至于完成不了相应的练习?这其中最主要的原因是什么呢?除了埋怨出的题目跨度太大意外,我们也应该好好的反思一下。 对于以上的问题,最主要的原因就是对于编程了解的不够深入。这个深入指的不是我们要去了解他的发展历史以及底层原理,而指的是我们要对编程有一个明确的定位,我们现在学的内容是什么,又能用来做什么? 编程与软件开发 很多同学在刚开始都会把和计算机相关的所有内容都和编程,敲代码,程序员联想到一起,这其中甚至包括:做系统、配路由、修电脑、做病毒等等脑洞大开的想法。这些想法很多是行外人的看法,但是也有一少部分发生在学习者身上,等开始学了才发现和预想的完全不一样。 通常来说学习编程所对应的岗位就是开发工程师,开发工程师根据工作内容的不同又分为很多种:前端、后端、移动端、嵌入式、游戏开发、大数据等等。相同点在于都是完成一个应用产品,也就是在电脑上运行的软件、通过浏览器访问的应用、手机端运行的各种APP、各种硬件设备的监控、数据分析产品等等。