Author:风往北吹
No description
Tags
Support Statistics
¥.00 ·
0times
Text Preview (First 20 pages)
Registered users can read the full content for free
Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.
Page
1
(This page has no text content)
Page
2
《面向对象》学习笔记
Page
3
《面向对象编程》学习笔记 by 风往北吹 作者:风往北吹 邮箱:lifeandhome@live.com 封面设计者:风往北吹 产品设计者:风往北吹 出版历史: April 6,2023 First Edition
Page
4
感谢 谨以此书献给我的家人,父亲、母亲和Internet,是您们的爱和支持伴 随我走过这些岁月 您们给于我生命,您们造就了如今的我。是您们的教育使我不断进 步,是您们开括了我们的视野(世界上拥有各种不同生存方式),是 您们让我们找到了志同到合的伙伴(不管我们的兴趣多么小众),是 您们改变了我们思维方式(从不同方面来看问题),让我们以一种全 新的视角看待问题,重新审视我们的生活方式,更好的思考生活的意 义。您们使我的存在拥有了意义。对您们的感谢我无法用言语表述, 仅以此书,献给您们!您们就是我的生命!
Page
5
目录 感谢 3 前言Preface iii 一切为了您的阅读的价值 iv 为什么要讲述学习技巧? iv Chapter 1 Introduction to Object Oriented Programming 6 第1.1节 OOP介绍 6 第1.2节 两种类型编程语言 6 第1.3节 模块化模型VS 面向对象模型 7 第1.4节 对象的组成 8 第1.5节 Methods 11 第1.6节 类的构造/Class Construction 12 第1.7节 Abstraction/抽像 15 1.7.1 Setters & Getters 16 1.7.2 Method Overloading/方法超载 17 1.7.3 Method Overriding/重载 18 1.7.4 Operator Overloading/操作符超载 18 第1.8节 Inheritance & Friends 19 附录 A 字符索引 23
Page
6
前言Preface 本书读者 本书面向没有编程经验且希望学习编程的人员。 意见和问题 本书是我自己编写的学习手册,难免出现错误。如果发现错误忽喷。 实在无法忍受书中的错误,请将错误指正并发送给我。因为是业余时 间编写,更新时间可能会很慢。最后,谢谢观看本书。 联系方式: Email:lifeandhome@live.com 如何使用本书 可以根据自己的需要使用本书。本书各章的内容相互独立,不必按顺 序阅读,你完全可以跳过不感兴趣的章节。如果遇到不理解的技术术 语,请参考书后的术语表,或者Google它。 风往北吹 2023年4月4日
Page
7
一切为了您的阅读的价值 书阅读的最大成本 时间才是读者付出的最大阅读成本。 阅读的时间成本=选择图书所花费的时间+阅读图书所花费的时间+误 读图书所浪费的卖单 阅读的收益 阅读图书最大的收益,来自于获取知识后,应用于自己的工作和生 活,获得品质的改善和提升,视野的开阔,更宽广的心胸,由此,油 然而生一种无限的满足感。 业绩的增长(效率的提高) 花费 一顿饭钱 职位的晋升 几次打车钱 工资的晋级 更好的生活条件 更开阔的视野 更宽广的心胸 为什么要讲述学习技巧? 学习如登山,路很多,但难、易不同。每人体能不 同,选择正确的道路才能登顶。同理,选择适合的、 最高效的学习方法至关重要。 学习方法--如何阅读一本书 大脑是我们进行学习器官。我们只有了解了大脑运行 原理,在学习时迎合这种原理进行学习才能更高效。 建议读者有时间的话,请阅读《如何阅读一本书》, 它会让提高你的阅读能力。 本书目标人群:没有编程语言背景,想学习编程,将 学到的西应用到日常生活当中。 人脑工作原理:人脑始终在搜索、扫描,寻找发现不同寻常的事物。 比如危险,当这种事件发生,神经系统工作,调动激素,作出应急反 映。比如看到老虎,我们的大脑会告诉我们危险,调动激素,让我们 运动起来逃跑。因此,大脑对图像更敏感,同样大脑对受伤的、痛苦
Page
8
的、快乐的、丰富的、危险的记忆是记忆的最牢的,多少年过去仍无 法忘记。 如何更好的记忆知识: 阅读前: 1. 明确学习目标、动机,有激情的学习; 2. 拿张白纸; 3. 学习前,在白纸上记下想要了解的问题、想法或过程; 4. 保持在学习前的注意力。 学习中应建立知识的总体框架、相互联系,然后进行细节描述。先整 体,后细节: 1. 保持高度的注意力。 2. 知识面覆盖:对学习的内容有大致印象。看讲座视频为 1.5X或2.X。全看完,不懂的先记下来 。阅读时只偶尔做 笔记,或在每章节后写一段落的总结。1将总结或想法可 视化,图文并茂。 学习完: 1. 使用交谈方式和个人风格描述您想要了解的问题、想 法,如故事模式、问答。用我们自己的话解释它。无法 解释的就是我们要填补的知识缺口。 2. 对付各种过程:了解每一个过程,并弄清楚它是怎么执 行的。将过程可视化,图文并茂。 3. 解决问题,触动情感,作笔记。记忆事情主要依赖于它 的情感内容(高兴的事,惊奇的事)。进行习题练习, 每做完一题,对答案,自我审查。练习,找出什么不 懂,再次翻书回顾就行 重点重温。
Page
9
Chapter 1 Introduction to Object Oriented Programming 面向对象编程导论 第1.1节 OOP介绍 什么是OOP?(非正式) 一种使用特殊数据类型的编程方法或风格; 使用新型数据类型(Frog类),而不是变量数据类型 (eg:整数、字符); Frog数据类型(对象)可以拥有函数(方法),比如 speak 什么是OOP?(正式) 利用那些拥有方法(函数)和属性的数据结构的编程方法 对象是下面单词的代名词 Class Interface(注:某些语言中,类与接口有一些不同) Figure 1.1 类与实例 对象(类对象)之间的关系 第1.2节 两种类型编程语言 支持OOP: 语言包含或通过插件来支持OOP功能。例如,C++。 完全OOP: 语言完全基于OOP,所有用到的数据结构都是对象。例如, Java、C#。 相似点: 类与Structure和Union很相似。
Page
10
不同点: 类有自己的方法; 类的数据、方法有访问权限(public、private、 protected); 类可以继承; 每个类各自独立,与程序其它部分不相关-----有点像程序 中的程序。 第1.3节 模块化模型VS 面向对象模型 Figure 1.2 不同模型的函数调用原理 消信传递(有两种方式) 通过interface 通过调用另一类中的方法 第1.4节 对象的组成
Page
11
Figure 1.3 方 法调用 Main Class 与C相似,需知道从那里开始; 注:不是所有OOP语言都有Main Class概念。有些脚本 语言,有它自己确定程序启动点的方法。它们通常称为动 态程序语言(Dynamic Programming Languages)。 支持Class Figure 1.4 main()类图 他们没有开始执行的main()函数
Page
12
Figure 1.5 支 持类图 类是方法和属性的封装体(Encapsulation) 每个类都拥有唯一的生态系统 回顾(以Person类为例) Figure 1.6 每个类都有唯一的生态系统 ---Object 虚的 Person的概念 ---Instance
Page
13
实体 具体某人 成员 Figure 1.7 类与实例的对比 ---属于对象的 Fields 属性 对象的成员都是数据类型 Integer Strings Other object Etc..... Method(方法) ---“Function”属于类 ---参考OOP,所有函数(Function)都被称为方法(Method)。 ---有点像汽车与卡车之间的不同。看起来不同之处很轻微,实际上是 两个不同的东西。 Properties Delegates 第1.5节 Methods Methods ---Function属于类 两种类型的成员
Page
14
Figure 1.8 方法与函数的对比 1. 类级访问(Static) 属于类而不是实例。例如:世界人类数量不是人类的属性,而是全人 类的属性。 2. 实例级访问(non-Static) 属于实例而不是类。例如:生日不是所有人类的属性,而是个人的属 性。 访问权限 1. public 任何代码都可以访问。 2. private 只能由类自身或“Friend”函数访问。 3. protected 类或子类访问。 构造方法:当新对象实例创建时自动调用。
Page
15
Figure 1.9 类与实例属性之间的区别 析构方法:当一个现有实例被销毁时自动执行。 第1.6节 类的构造/Class Construction 构造类的步骤 定义一个新的对象类型 构建新对象类型的组成部分
Page
16
使用此对象类型创建一个实例 定义一个类的步骤 首先,是先有鸡还是先有蛋的问题? 假设我们是宇宙之主,我们想创建一个名为Chicken的动 物。首先,我们要定义Chicken是什么,它能做什么。 Table 1.1 Chicken的组成部分和行为 组成部分 行为 头 走 翅 吃 足 呼吸 眼 咕咕叫 羽毛 扇翅膀 鸟嘴 生蛋 现在,回到先有鸡,还是先有蛋的问题? Figure 1.10 类实例化-----创建类实体 ------根据OOP 首先,要有造物主 鸡蛋出现 鸡出现 如何创建类
Page
17
依赖语言 纯OOP语言,不必用template 内置OOP,需要template 什么是对象Template? 典型对象由两个文件组成,以及一个执行文件 ------Header/Interface/Template File 拥有对象模板的代码文件 ------实例文件(类) 定义类方法的代码文件 ------Driver文件 使用对象的代码文件,创建实例的文件 第1.7节 Abstraction/抽像 Figure 1.11 利用Template创建类和类实例 什么是Abstraction? 将处理细节信息与用户分离; 在OOP代码中,程序员不必了解所有错综复杂的细节,只 要知道如何使用它。
Page
18
实例 1. 创建Car 实例2.使用Car Figure 1.12 Car工厂 我们只要知道它的几个功能,以及这些功能是工作良好还是异常即 可。 Figure 1.13 使用Car 1.7.1 Setters & Getters Setters 一个设置实例属性的方法。 Gettters 一个直接获取类变量的方法。 Setters & Getters 用两种方法实现 ---方法 ---属性(后面详细介绍)
Page
19
优点:如果一个子段即可读或可写,使用起来会更方 便。阻止直接访问私有信息,可由某一方法(自己) 来控制访问权限。 Figure 1.14 Setters & Getters的使用 1.7.2 Method Overloading/方法超载 对同一个名称的函数,提供多个同名函数,但使用的参数不相同。这 使方法适用更多环境,更通用。 在类中提供一个设置number的方法,允许多种类型参数输入。
Page
20
Figure 1.15 方法超载 1.7.3 Method Overriding/重载 使用外部方法替换方法; 可以被重载的方法被称为(virtual Methods)虚拟方法。 1.7.4 Operator Overloading/操作符超载 为作操符提供多种方法; 这使操作符可以在你的object与instance使用,好像他们是 原始数据类型。
The above is a preview of the first 20 pages. Register to read the complete e-book.
Comments 0
Loading comments...
Reply to Comment
Edit Comment