面向对象

关于面向对象的伦理知识

纵饮孤独 提交于 2019-12-02 12:51:34
**```java /*面向对象的三大特征 *封装 *多态 *续承 所有面向对象的编程语言都有这三大特征。 采用面向对象的方式开发一个软件,生命周期当中:【整个生命周期中贯穿使用oo面向对象方式】 *面向对象的分析 ooa *面向对象的设计 ood *面向对象的编程 oop *类和对象的概念 *什么是类? -类在现实生活中是不存在的,是一个模板,是一个概念,是人类大脑是是思考抽象的结果。 -类代表了一类事物。 -在现实生活中,对象A与对象B之间具有共同特征,进行抽象总结出来一个模板,这个模板 被称之为类。 *什么是对象? -对象是实际存在的个体。现实生活世界当中实际存在的。 * 例如:描述一下整个软件开发过程: *程序员先观察现实世界,从现实世界当中寻找对象 *寻找了N多个对象之后,发现所有的对象都有共同特征 *程序员在大脑中形成一个模板(类) *java程序员可以通过java代码来表述一个类 *java程序员中有了类的定义 *然后通过类就可以创建对象 *有对象之后,可以让对象直接协作起来形成一个系统。 * 类----》【实例化】----》类 *对象又被称为实例化 / instance *对象---【抽象】-----》类 *重点: 类描述的是对象的共同特征 共同特征列如:身高特征 这个身高特征在访问的时候,必须先创建对象,通过对象去访问这个特征。 因为这个特征具体的某个对象上之后

什么是面向对象编程?面向对象和面向过程有什么区别?

纵饮孤独 提交于 2019-12-02 12:45:55
面向对象 面向对象的程序设计 (Object-Oriented Programming,简记为OOP),是当下最流行的程序设计方式之一。在面向对象的设计思想中,将程序视为多个对象共同协作的结果。程序被划分为多个子模块,再由多个对象完成各自模块最终实现程序的功能。 我们来看一个例子(部分代码): 班级要举办元旦晚会演出,有三名同学报名了歌舞表演环节,分别是唱歌的小明、唱歌的小李和跳舞的小红。 public static void main ( String [ ] args ) { //创建对象 People 小明 = new People ( ) ; People 小李 = new People ( ) ; People 小红 = new People ( ) ; //对象完成任务 小明 . sing ( ) ; 小李 . sing ( ) ; 小红 . dance ( ) ; } 如果你是第一次接触java,也许会对这部分代码存有一些疑问,new是啥?怎么还有中文?我们暂时先不管这些,本文目的是带大家认识接触面向对象,至于java的细节和面向对象的特性将在其他文中介绍。 运行结果: 小明唱了一首歌,真好听! 小李唱了一首歌,真好听! 小红跳了一支舞,真好看! 在示例中,歌舞环节由三个对象(小明、小李和小红),每个对象实现各自的模块(小明唱歌、小李唱歌、小红跳舞)

C++-面向对象(五)

房东的猫 提交于 2019-12-02 10:45:24
父类构造函数 子类的构造函数默认会调用父类的无参构造函数 如果子类的构造函数显式地调用了父类的有参构造函数,就不会再去默认调用父类的无参构造函数 如果父类缺少无参构造函数,子类的构造函数必须显式调用父类的有参构造函数 #include < iostream > using namespace std ; //class Person { // int m_age; //public: // Person() { // cout << "Person()" << endl; // } // Person(int age) :m_age(age) { // cout << "Person(int age)" << endl; // } //}; // //class Student : public Person { // int m_score; //public: // Student() { // cout << "Student()" << endl; // } // Student(int age, int score) :m_score(score), Person(age) { // cout << "Student(int age, int score)" << endl; // } //}; class Person { int m_age ; public :

面向对象(三)

六眼飞鱼酱① 提交于 2019-12-02 08:42:21
多态 多态就是某一个事物,在不同时刻表现出来的不同状态。 前提是要有继承关系,方法重写,没有也可以,但是就没有意义了。 举例: Aniaml a = new Cat ( ) ; 猫可以是猫类型,同时猫也是动物的一种,也可以把猫称为动物。 其实就是父类引用指向子类对象。 父 f = new 子(); 多态中的成员访问特点 成员变量:编译看左边,运行看左边。 构造方法:创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化。 成员方法:编译看左边,执行看右边。(当没有重写时,去父类找) 静态方法:编译看左边,运行看左边。(静态和类相关,算不上重写,所以,访问还是左边的) 案例演示 class Fu { int n = 10 ; Fu ( ) { System . out . println ( "父类构造方法" ) ; } public void show ( ) { System . out . println ( "Fu show" ) ; } public static void set ( ) { System . out . println ( "静态方法" ) ; } } class Zi extends Fu { int n = 20 ; Zi ( ) { System . out . println ( "子类构造方法" ) ; } @Override

面向对象的运行时特性分析+面向对象与内存

心已入冬 提交于 2019-12-01 20:38:50
相对于面向过程的开发方法,面向对象通过退一步,海阔天空。最频繁地用来表达人类认知或描述的自然语言中的主谓结构在面向对象的形式系统中得到充分的映射。这种形式系统具有极大的语义构建能力。我甚至能够想象如果加上模糊逻辑的应用,任何系统的构建都将不成问题。因为它几乎具有完美的语义构建能力。如果再加上启发式搜索,恐怕连强人工智能也不是没有可能的! 传统的开发方法在其形式系统的语义表达能力上存在的极限被称为语言鸿沟,因为从那些系统到自然语言间存在巨大的GAP。面向对象通过填平这个鸿沟,彻底地解决了计算机形式系统的表达问题。原因是其具有非常强的认识论基础:对象。所以,说哲学没用的真的是值得好好反思。没有哲学的话,有哲学的话,差别不是一般的大: 人类正常认识的途径是向前看 。 哲学是向后看 。方向不同,看到的东西就不同,结果自然就不同。 但是这是从开发方法的角度所讨论的面向对象。也就是说,它的确是一种非常好的开发方法。它当然同时也是一种非常好的建模方法。这更进一步意味着使用它所构建出来的系统与真实“世界”将更接近(因为它与人类语言的表达方法更贴近。而“世界”其实存在于语言中)。这种模型(人脑模型与计算机模型两者)上的一致性给我带来一种莫大的安全感与舒适感,因为: 1,运行时变得非常透明且非常容易理解。系统运行时对我来说再也不是不可捉摸的了。我作为一个系统的“读”者

oopday01(面向对象-类&private&this)

折月煮酒 提交于 2019-12-01 19:47:52
面向对象基本概述、封装 01_ 面向对象 ( 面向对象思想概述 ) * A: 面向过程思想概述 * 第一步 * 第二步 * B: 面向对象思想概述 * 找对象 ( 第一步 , 第二步 ) * C: 举例 * 买煎饼果子 * 洗衣服 * D: 面向对象思想特点 * a: 是一种更符合我们思想习惯的思想 * b: 可以将复杂的事情简单化 * c: 将我们从执行者变成了指挥者 * 角色发生了转换 * E: 面向对象开发 * 就是不断的创建对象,使用对象,指挥对象做事情。 * F: 面向对象设计 * 其实就是在管理和维护对象之间的关系。 * G: 面向对象特征 * 封装 (encapsulation) * 继承 (inheritance) * 多态 (polymorphism) 面向过程与面向对象有哪些区别与联系?最好能举例说明 举例说明 : 面向对象的思想特点有哪些? * a: 是一种更符合我们思想习惯的思想 * b: 可以将复杂的事情简单化 * c: 将我们从执行者变成了指挥者 面向对象的三大特征分别是什么? * 封装 (encapsulation) * 继承 (inheritance) * 多态 (polymorphism) 02_ 面向对象 ( 类与对象概述 ) * A: 我们学习编程是为了什么 * 为了把我们日常生活中实物用学习语言描述出来 * B: 我们如何描述现实世界事物 *

c++程序设计兼谈对象模型(介绍)

时光总嘲笑我的痴心妄想 提交于 2019-12-01 13:11:31
    主要介绍的内容为:泛型编程和面向对象编程 (1) 泛型编程和面向对象编程虽然分属于不同思维,但他们正是c++的技术主线,所以也将会记录template(模板) (2) 深入探索面向对象之继承关系所形成的对象模型,包括隐含与底层的this指针,vptr(虚指针),vtbl(虚表), virtual nechanism(虚机制)以及虚函数(virtual functions)造成的polymorphism(多态)效果。 来源: https://www.cnblogs.com/huahuati/p/11687768.html

java-面向对象-static关键字

天大地大妈咪最大 提交于 2019-12-01 12:22:30
静态:static 用法:是一个修饰符,用于修饰成员(成员变量,成员函数) 当成员被修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用:类名.静态成员 static内存中的特点: 1、随着类的加载而加载(类在内存中创建静态对象创建),随着类的消失而消失,说明它的生命周期最长 2、优先于对象存在 3、被所有对象所共享 4、可以直接被类名所调用 实例变量和类变量的区别: 1、存放位置   类变量随着类的加载而存在于方法区中   实例变量随着对象的建立而存在于堆内存中 2、生命周期   类变量生命周期最长,随着类的消失而消失   实例变量生命周期随着对象的消失而消失 静态使用注意事项: 1、静态方法只能使用静态成员   非静态方法既可以访问静态也可以访问非静态 2、静态方法中不可以定义this,super关键字   因为静态优先于对象存在,所以静态方法中不可以出现this 静态有利有弊: 利:对对象的共享数据进行单独空间的存储,节省空间,没有必要没一个对象中都存储一份。   可以直接被类名调用 弊:生命周期过长。 访问出现局限性。 class Person {   string name; // 不可以被静态,因为每个人名字都不一致,也叫成员变量,实例变量   String country = "CN"; // 因为国籍一致,被静态后country的值都是CN,叫

面向对象和面向过程的区别及其优缺点

一世执手 提交于 2019-12-01 11:01:56
最近在学习Python,之前学习过C语言,所以对面向过程编程和面相对象编程有一定的理解,但是不深入,也无法应用一个实例来解释,今天看到博客园上一篇帖子,讲的很好,拿来借用一下。 附上原链接 http://www.cnblogs.com/strivers/p/6681876.html 1、面向过程和面向对象的区别 面向过程就是分析出解决问题的步骤,然后一步一步实现,在使用的时候分步调用即可; 面向对象就是把问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是描述某个事物在整个解决问题步骤中的行为。 以生活中下五子棋为例,表达如下: 面向过程的解决思路:开始游戏->黑子先走->描绘布局->判断输赢->白子走->描绘布局->判断输赢->返回黑子先走继续执行->直至有输赢结果,把各个步骤封装,然后调用; 面向对象的解决思路:各个步骤可分为1、黑白双方,两方走是一样的;2、棋盘系统,负责描绘布局;3、规则系统,判断输赢、犯规等。 第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 2、优缺点 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、 Linux

面向对象学习笔记整理

痞子三分冷 提交于 2019-12-01 08:31:24
面向对象学习笔记整理 对象类型在内存中的分配 1:内存结构 栈空间段( 后进先出 ):空间小被CPU访问速度快,用于存放程序中的临时变量,方便用于保存和恢复调用现场,主要存放占用空间小的数据类型(整型,bool型) 堆空间段( 先进先出 ):存放程序运行中动态分配的内存段,存储占用空间较大的数据类型(数组,资源,对象) 数据段:存储已经初始化的全局变量,换句话就是说存储静态分布的变量。 代码段:代码段需要在运行时防止被非法修改,值允许读取操作。(函数) $student = new Person(); a:实例化对象$student存储在 栈内存 段中 b:类Person存储在 堆内存 中 2:使用final标识的类不能被继承;在类中使用final标识的成员方法,在子类方法不能被覆盖。 3:类的静态属性类似于全局变量 访问方式1 类名:静态成员属性/方法名 访问方式2 self: 静态成员属性/方法名 4:单态设计模式是指在OOP中一个类只能有一个实例对象存在。 5:将类中的成员属性定义为常量,只能使用const关键字,在类中声明为常量的属性为只读不能重新赋值。常量在声明时一定要赋初值。访问通过self 6:在PHP中,同一个类中只能声明一个构造方法,默认是public访问 7:析构方法是在对象呗销毁前最后调用的一个方法。当堆内存中的对象失去访问它的引用时,就不可再被访问