面向对象

编程技能的层次

 ̄綄美尐妖づ 提交于 2020-02-09 10:42:25
程序员的编程技能随着经验的积累,会逐步提高。编程技能可以分为一些层次,这些层次指的程序员设计和编写程序的能力层级。 第0层——非程序员 初学编程者,遇到问题,完全是懵懵懂懂,不知道该怎么编程去解决问题。也就是说,还是门外汉,还不能被称之为程序员。计算机在他面前还是一个神秘的黑匣子。 第1层——基础程序员 学习过一段时间的编程后,接到任务,可以编写程序完成任务。这一层次编写出来的代码,正常情况下是能够工作的,但在实际运行中,碰到一些特殊条件就会出现各类BUG。也就是说,具备了开发Demo软件的能力,但开发的软件真正交付给客户使用,恐怕会被客户骂死。 虽然程序是写好了,但到底为什么它有时能正常工作,有时又不行,程序员自己也不知道。运行中遇到了bug,或者需求改变,需要修改代码或者添加代码,很快程序就变得结构混乱,代码膨胀,bug丛生。很快,就连最初的开发者自己也不愿意接手维护这个程序了。 第2层——数据结构 经过一段时间的编程实践后,程序员会认识到【程序=数据结构+算法】这一古训的含义。他们会使用算法来解决问题。进而他们会认识到,算法本质上是依附于数据结构的,好的数据结构一旦设计出来,那么好的算法也会应运而生。 设计错误的数据结构,不可能生长出好的算法。 第3层——面向对象 再之后,程序员就会领略面向对象程序设计的强大威力。大多数现代编程语言都是支持面向对象的。但并不是说

C++面向对象学习_继承

江枫思渺然 提交于 2020-02-05 19:34:19
|| 继承的用处:减少重复代码 语法: class 子类:继承方式 父类 {}; || 继承方式: public --- 公有继承 ---无法访问父类私有成员,其他成员照常继承 protected --- 保护继承 ---无法访问父类私有成员,其他成员变为保护权限后继承 private --- 私有继承 ---无法访问父类私有成员,其他成员变为私有权限后继承 || 继承中构造和析构顺序 (类比以其他类的对象作为一个类的成员变量时的情况) 共同点:被包含在内部的先构造,外部的后构造(先内后外),析构时相反(栈) 继承中构造和析构顺序 构造顺序:先支类再主类 析构顺序:先主类再支类(相反) 以其他类的对象作为一个类的成员变量时的情况 构造顺序:先支类再主类 析构顺序:先主类再支类(相反) || 继承同名成员处理方式(包括静态成员和非静态成员) 问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢? 访问子类同名成员 直接访问即可 访问父类同名成员 需要加作用域 注意事项:访问父类同名的重载函数时,也必须加上作用域来进行访问。(父类中的同名函数 的参数会被编译器隐藏,无法区分重载函数) 只要是调用父类同名函数,都加上作用域就好 || 多继承 C++允许一个类继承多个类 (一个儿子可以有多个父亲) 语法: class 子类 :继承方式 父类1 , 继承方式

C++面向对象-17-继承

假装没事ソ 提交于 2020-02-03 12:18:54
开始学习C++面向对象的第二个特性:继承,前面学习都是类和对象,也就是封装的特点。所有的面向对象的编程语言都有封装,继承和多态这三个基本特性。继承就要了解,父类和子类的概念。意思就是,父类的属性和行为,子类可以继承得到,同时子类可以写一些特有的特性。通常这样去概括:父类在上层,特点是更抽象,子类在底层,特点是更细分和具体。 1.继承的语法 在C++中继承的语法格式如下 class 子类名称 : 继承方式 父类名称 { }; 来一个具体的例子,动物类和狗类的继承例子 class Animal { public: string m_Name; int lets; void eat() { cout << "吃东西" << endl; } }; class Dog : public Animal { }; 继承中一些概念: 父类: 更上层,抽象的类,也有把父类叫 基类的 子类: 更细分,具体的类,也有把子类叫 派生类 2.继承的好处 继承最大的好处就是减少重复代码。 3.继承方式 在上面语法格式,我们看到冒号后面跟着是继承方式,其中public就是继承方式的一种。其实,继承一共有以下三种方式: 公共继承 保护继承 私有继承 看到这三种,其实就是和权限关键字public protected private一一对应关系。这三种继承方式有什么特点和区别,我们通过例子来说明和学习。

javascript的基础

陌路散爱 提交于 2020-01-28 19:11:11
JavaScript简介 JavaScript是一种可以与HTML标记语言混合使用的脚本语言,其编写的程序可以直接在浏览器中解释执行。 对于一些初学者来说往往会将一些其与java编程语言混为一谈,实际上从本质上来说,这二者并没有什么本质的联系。 JavaScript的国际标准是ECMAScript. javaScript和java的联系 JavaScript Java 基于对象,不能说是面向对象,比如说,JavaScript不能支持继承 面向对象 解释 解释或者编译 弱变量类型,js的弱类型是变量的弱类型 强变量类型 JavaScript的注解 js的声明学习: 1、在head标签中使用script标签进行代码域的声明 <!--声明js代码域--> <script> alert('内容'); </script> 2、在head标签中使用script标签引入事先在外部声明好的js文件 特点:可以实现js代码的重复使用,避免代码的冗余 <script src="相对路径" type="text/javascript" charset="utf-8"></script> js中的变量 <!-- js的所有变量声明只有var关键字 js的变量名是严格区分大小写的 js中的字符串可以使用双引号也可使用单引号 js可以使用同名变量,后面会将前面的覆盖 --> var a =123; var

面向对象程序设计寒假作业1

半城伤御伤魂 提交于 2020-01-27 22:53:42
这个作业属于哪个课程 2020面向对象程序设计 这个作业要求在哪里 面向对象程序设计寒假作业1 这个作业的目标 问答题 实践题 编程题 作业正文 问答题 实践题 编程题 其他参考文献 Markdown基本语法 visual studio2019的安装以及使用 百度问答等 来源: https://www.cnblogs.com/hyr031903143/p/12237038.html

面向对象程序设计寒假作业1

青春壹個敷衍的年華 提交于 2020-01-27 21:59:28
Markdown在线编辑器 - www.MdEditor.com 这个作业属于哪个课程 2020年面向对象程序设计 (福州大学 - 数学与计算机科学学院) 这个作业要求在哪里 面向对象程序设计寒假作业1 这个作业的目标 安装C++开发环境(见附录)、完成问答题、实践题及编程题、发布博客 作业正文 问答题 、 实践题 、 编程题 。 来源: https://www.cnblogs.com/czl411/p/12236608.html

第1章《启蒙》. 5.从C到C++,谈谈人类的编程思维

亡梦爱人 提交于 2020-01-27 03:42:52
0. 引子 想要对着机器发号指令,但又不直接使用“机器语言”,我们就会想制定一门比较符合人类思维习惯的编程语言,然后再用“翻译/编译”器将它转成机器语言。简单地说,就是一个使用C(中间工具)将B(接近人类思维的语言所写的代码)转换成A(机器语言)的过程。 那么人类有什么思维习惯呢?比如人类都喜欢 “先入为主”,所以我们制定的新语言一定要每一个单词都看上去很惊艳;再比如,人类都容易“喜新厌旧”,所以我们的制定的新语言一定要三天两头就升级一下;再比如现代人做事都超爱“拖延”,所以我们制定的语言一定要让人容易用着用着就上瘾…… 这些都是胡扯。 应用在编程这件事上,最广泛的人类思维习惯或思维模式有:“面向过程”、“面向对象”等。 1. 面向过程 日常生活中要完成一件比较大的事,是不是就习惯将大事分解成多件小事?即:把一个相对大(复杂)的办事过程,拆分成存在时序关系的多个小过程。比如:家族主妇想做道菜,可以将做菜的事分成:备菜、炒菜、上桌等过程。其中备菜过程,又可以细分出买菜、洗菜、切菜等等。对应到编程语言,通常用“功能函数/function”代表过程,也有的语言更是直接对应到“过程/procedure”,所以面向过程被提前为“PO”,即“Procedure Oriented”。 2. 面向对象 面向过程的思路很直观(不就是大事化小,小事化了嘛!),但是,当一件事情庞大、复杂到某种程度时

面向对象--实现单例模式

主宰稳场 提交于 2020-01-27 02:04:44
1.定义 一个类只能创建一个对象 为什么使用单例模式: 对于系统中的某些类来说,只有一个实例重要,比如:Windows中只能打开一个任务管理器。如果不使用单例模式,将会弹出多个任务管理器窗口,若显示的内容完全一致,则显示对象重复,浪费内存资源;若显示的内容不一致,则表示在这一瞬间系统有多个状态,与实际不符,也会给用户带来误解。因此确保系统中某个对象的唯一性很重要。 2.实现单例模式的三种方式 (1)装饰器实现单例模式 #装饰器实现单例模式 from functools import wraps def singleton ( cls ) : instances = { } #key是类名,value是对象名 @wraps ( cls ) def wrapper ( * args , ** kwargs ) : name = cls . __name__ #获取类的名字 if instances . get ( name ) : return instances . get ( name ) #直接返回缓存中的对象 else : obj = cls ( * args , ** kwargs ) instances [ name ] = obj return obj return wrapper @singleton class Person ( object ) : pass if

面向对象程序设计寒假作业1

萝らか妹 提交于 2020-01-26 19:20:14
这个作业属于哪个课程 2020年面向对象程序设计 这个作业要求在哪里 面向对象程序设计寒假作业1 这个作业的目标 1、安装c++开发环境 2、了解C语言与c++ 3、查看c++编译器版本和使用命令行 4、编程题 作业正文 问答题 实践题 编程题 其他参考文献 在Windows命令行中编译运行C/C++程序 来源: https://www.cnblogs.com/Zenlena/p/12234609.html

面向对象程序设计寒假作业1

a 夏天 提交于 2020-01-25 17:59:42
这个作业属于哪个课程 2020面向对象程序设计张栋班 这个作业要求在哪里 面向对象程序设计寒假作业1 这个作业的目标 安装C++开发环境、评价C语言的不足之处、了解C/C++的编译过程、查看C++编译器版本、使用命令行编译一份C语言/C++代码、按照要求完成简单文言文编程的相关功能 作业正文 面向对象程序设计寒假作业1(问答题) 、 面向对象程序设计寒假作业1(实践题) 、 面向对象程序设计寒假作业1(编程题) 其他参考文献 C++的编译过程及原理 、 C/C++编译过程 、 C++的编译过程及原理 、 C/C++编译过程 、 在Windows命令行中编译运行C/C++程序 来源: https://www.cnblogs.com/JoshuaYu/p/12233221.html