面向对象

python面向对象<一>

拥有回忆 提交于 2019-12-03 03:39:38
一、面向对象和面向过程 面向过程:   核心过程二字,过程即解决问题的步骤,就是先干什么后干什么   基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式 优点:复杂的过程流程化 缺点:扩展性差 面向对象:   核心是对象二字,对象指特征与技能的结合体   基于该思想编写程序就好比在创造一个世界,世界是由一个个对象组成,是一种‘上帝式’的思维方式 优点:可扩展性强 缺点:变成复杂度高,极容易出现过度设计的问题 二、类   对象是特征与技能的结合体,类就是一系列对象相似的特征与技能的结合体   在现实生活中:一定是先有一个个具体的对象,后总结出类   在程序中:一定是先定义类,后产生对象 class Students: #类属性 school = 'IT大学' #初始化函数 def __init__(self,name,age): #对象属性 self.name = name self.age = age #self:谁实例化出来的对象谁就是self s1.name = name s2.name = name def run(self): print('%s is running......' % self.name) s1 = Students('小明',25) s2 = Students('小李',26) print(s1.school) print(s2.school

网易云课堂视频转存:面向对象程序设计-C++(视频) 浙江大学 翁恺老师

匿名 (未验证) 提交于 2019-12-03 00:41:02
转自:网易云课堂视频: 网易云课堂 题目:面向对象程序设计-C++ 发布者:浙江大学 翁恺老师 目录: 下载地址: 请点击我移步下载区 文章来源: 网易云课堂视频转存:面向对象程序设计-C++(视频) 浙江大学 翁恺老师

面向对象的概念总结

匿名 (未验证) 提交于 2019-12-03 00:37:01
面向对象编程定义以及类定义的过程还有几个强调的点要注意。 ‘‘‘ 面向过程编程: 核心是过程二字,过程指的是解决问题的步骤,即想干什么再干什么后干什么。。。 基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式 优点: 复杂的问题流程化、进而简单化 缺点: 可扩展性差 面向对象编程: 核心是对象二字,对象是特征与技能的结合体 基于该思想在编写程序就好比在创造一个世界,世界万物都是对象,你就是这个世界的上帝 对象是特征与技能的结合体,类就是一系列对象相似的特征与技能的结合体 站在不同的角度,总结出的类是截然不同的 在现实世界中一定是先有的一个个具体存在的对象,然后随着人类文明地发展而总结出了不同的类 在程序中务必保证先定义类,后调用类来产生对象 现实世界中总结对象-----》抽取相似之处,得到现实世界中的类---》定义为程序中的类-----》调用类,产生程序中的对象 站在老男孩选课系统的角度: 现实世界中的老男孩学生对象: 对象 1 : 特征: 学校=‘ oldboy ‘ 姓名=‘耗哥‘ 年龄= 18 性别=‘ male ‘ 技能: 选课 对象 2 : 特征: 学校=‘ oldboy ‘ 姓名=‘猪哥‘ 年龄= 17 性别=‘ male ‘ 技能: 选课 对象 3 : 特征: 学校=‘ oldboy ‘ 姓名=‘帅翔‘ 年龄= 19 性别=‘ female ‘ 技能:

VB.NET

匿名 (未验证) 提交于 2019-12-03 00:32:02
首先,VB.NET是基于微软.NET Framework之上的面向对象的编程语言。它可以看做是VB在.Net framework平台上的升级版本,增强了对面向对象的支持。 在学习VB.NET的过程中你会发现它的代码格式几乎和VB一模一样,但大多数选择VB语言的程序员都会选择VB.NET,那它们两个之间到底有什么区别呢? 这样看起来VB.NET跟VB除了代码格式,其他的确实不太一样,倒是跟C#很像了。那是因为VB.NET和C#都是完全面向对象,所以面向对象的三大特征:封装、继承、多态,以及基于这些的重载,接口等才可以在代码中体现。 C#与VB.NET不同: 看了很多巨人的博客发现VB.NET其实比C#更具有发展前景,但这还需要我们在不断的学习中自己去发现其中的优劣之处。 以上是我对VB、VB.NET、C#三种语言的异同总结,可能有不准确的地方,还望指正。 文章来源: VB.NET

谭浩强《C++面向对象程序设计》知识点总结

匿名 (未验证) 提交于 2019-12-03 00:27:02
输入:采用标准输入流对象 istream 和提取运算符 cin>> 输出:采用标准输出流对象 ostream 和插入运算符 cout<< 一名多用,要求重载函数的参数个数或类型与原来的不同 给功能相似的函数建立一个统一的模板 要求:函数的参数个数和原来的要相同 格式: template <typename T> 通用函数定义 相当于给变量起一个别名,变量和其引用共享同一内存空间 e.g. int a; int &b = a; //声明b是一个int型变量a的引用 String类 格式: new 类型(初值) //返回一个指向数据类型的指针 new 类型[ num ] //new一个含有num个元素的类型数组 delete [ ] 指针变量 //[ ]表示对数组空间操作,可选 2.1 瀵硅薄 包含作为属性的数据成员和作为行为的成员函数,成员函数用来对数据进行操作,以便实现某些功能。 面向过程程序设计: 程序=数据结构+算法 面向对象程序设计: 对象=数据结构+算法, 程序=对象s+消息 抽象 :将有关事物归纳集中,作用是表示同一类事物的本质。类是对象的抽象,而对象是类的具体表现形式。 封装 :将数据和操作数据的函数绑定在一起,将具体的实现细节隐藏起来,仅对外保留接口。 继承 :利用已有类建立新类,新类从已有类中获得其意义特性的机制。 多态

什么是VB.NET?

匿名 (未验证) 提交于 2019-12-03 00:27:02
简介 VB.NET是一种简单,现代,面向对象的计算机编程语言,它由微软开发,将.NET Framework和公共语言运行库的强大功能相结合。Visual Basic .NET是在.NET Framework上实现的面向对象的计算机编程语言。 虽然它是经典的Visual Basic语言的演变,但是它 不兼容VB6,在任何旧版本编写的代码不能在VB.NET下编译 。 VB.NET与VB的关系 VB.NET并不是VB的新版本,可以说它们除了有些语法相似外,是完全不同的两种语言。 ①首先VB.NET是一个完全面向对象的语言,而VB则不是完全面向对象的。 ②VB.NET构建于.NET framework框架之上,是.NET平台上的继承,而不是同系列语言的沿袭。 VB.NET与C#的关系 C#是由C和C++衍生出的一门语言,VB.NET大量借鉴了VB这门语言。两者都是微软出品的依靠.NET framework之上的编程语言。二者其实也是有很多区别的。 ①语法声明上:例如定义变量,VB.NET需要Dim... 而C#是【数据类型】+名称..... ②相比.NET,C#具有指针, 移位操作符, 内嵌的文档(XML),重载操作符等功能。 ③相比C#,VB.NET有更丰富的语法: Events, Try…Catch, Select…Case, 实现 Interface ,后期绑定(Late

面向对象设计七大原则

匿名 (未验证) 提交于 2019-12-03 00:22:01
最近团队在学习Agile 和 Clean Code。然后对面向对象设计的一些原则进行了一些学习和整理。包括SOLID、 合成复用原则与迪米特法则。 可维护性 Robert C.Martin认为一个可维护性较低 的软件设计,通常由于如下四个原因造成: 可复用性 Peter Coad认为,一个好的系统 设计应该具备如下三个性质: 设计原则 先看下设计原则,这里我列举了常说的 SOLID 和 另外两大原则。 设计原则名称 简介 出处 单一职责原则 (Single Responsibility Principle, SRP) 就一个类而言,应该仅有一个引起它变化的原因。 Robert C. Martin《敏捷软件开发:原则、模式与实践》第八章 开闭原则 (Open-Closed Principle, OCP) 软件实体对扩展是开放的,但对修改是关闭的。即在不修改一个软件实体的基础上去扩展其功能。 Bertrand Meyer《面向对象软件构造( Object Oriented Software Construction )》 里氏代换原则 (Liskov Substitution Principle, LSP) Subtypes must be substitutable for their base types。 子类必须能够替换成它们的基类。 Liskov女士《 Data

ES5和ES6面向对象的写法

匿名 (未验证) 提交于 2019-12-03 00:21:02
面向对象: ES5: function User(name,age){ this.name = name; this.age = age; } User.prototype.showName=function(){ console.log(this.name); } User.prototype.showAge=function(){ console.log(this.age); } function Vipuser(name,age,level){ User.call(this,name,age); this.level = level; } Vipuser.prototype = new User(); Vipuser.prototype.constructor = Vipuser; Vipuser.prototype.showLevel=function(){ console.log(this.level); } var v1 = new Vipuser('hum',12,3); v1.showName(); v1.showAge(); v1.showLevel(); ES6: 面向对象:注意User后面没有括号 。 class User{ constructor(name,age){ this.name = name; this.age = age; } showName(

ES5和ES6面向对象的写法

匿名 (未验证) 提交于 2019-12-03 00:21:02
面向对象: ES5: function User(name,age){ this.name = name; this.age = age; } User.prototype.showName=function(){ console.log(this.name); } User.prototype.showAge=function(){ console.log(this.age); } function Vipuser(name,age,level){ User.call(this,name,age); this.level = level; } Vipuser.prototype = new User(); Vipuser.prototype.constructor = Vipuser; Vipuser.prototype.showLevel=function(){ console.log(this.level); } var v1 = new Vipuser('hum',12,3); v1.showName(); v1.showAge(); v1.showLevel(); ES6: 面向对象:注意User后面没有括号 。 class User{ constructor(name,age){ this.name = name; this.age = age; } showName(

Go 面向对象之结构体

匿名 (未验证) 提交于 2019-12-02 23:57:01
#### Go 面向对象之结构体最近有四天没更新公众号,有一些事情耽误了,生活就是这样,总会一些事情让人措不及防; ***山浓水浅,坐看流年***1. Go 也支持面向对象编程(OOP) 但是它和传统的面向对象编程还是有一些区别,并不是纯粹的面向对象编程; 2. Go 中没有类(class), Go 中struct 和其它编程语言中的类有同等地位,所以我们可以理解Go 是基于struct 来实现OOP; 3. Go 面向对象很简洁,没有传统OOP 的继承,方法重载,构造函数等等; 4. Go 面向对象仍有继承,封装,多态的特性,只是它的实现与传统的OOP语言不同; ##### 结构体与结构体变量(实例/对象)的关系图 ---说明: 1. 将一类事物的特性提取出来(比如猫类),形成一个新的数据类型就是一个结构体; 2. 通过这个结构体,可以创建多个变量(实例/对象); 3. 事物可以是猫类,也可以是其它的类...; 案例: package main import "fmt" // 定义一个结构体,类似于类 // 将Cat 的各个字段/属性,放入到结构体中 type Cat struct { Name string Age uint Color string Hobby string } func main(){ // 声明一个Cat 变量,也就是实例 var a1 Cat a1