您的位置:首页 > 编程语言 > C语言/C++

C++课堂学习笔记

2016-03-17 19:36 417 查看
一、第一个C++程序

在IDE里新建一个project,跑起来。

IDE用法:

refactor:动词,重构。

bug:

1、eclipse-->debug之后,报错:“无法打开文件“kernel32.lib””。

解决办法:在:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib目录下,复制kernel32.lib文件到目录:“D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib”下,重新debug即可解决。

二、什么是对象

面向对象(Object Oriented,OO),oriented愿意是“源于,源自于”。台湾对此的翻译是“物件导向”,是比较确切的。这是告诉我们要从对象出发来分析问题、解决问题。

什么是对象?

object = entity。对象就是东西,实例。从构成上讲,可以说成是 属性+服务。属性或状态就是 data,服务或操作就是 operations。



这个图也在告诉我们,数据是被操作包裹着的,我们只能通过提供给外部的各种操作,进而去修改里面的数据!而不能绕过操作,直接去修改数据!

c++的class的认识:对对象进行的操作是在结构体,也就是class内部的,当要进行操作的时候,我们是让那个对象自己去做那个操作,通过运算符“.”来完成。

那到底什么是OO呢?OO是一种用来组织、设计和实现的方法,既可以用来组织设计,也可以用来组织实现。

上面说的设计是什么呢?当我们遇到一个问题,需要找到一个解决问题的思路,这就是设计。这与具体的程序设计语言无关。

实现就是用代码写出来。

总结来说就是,有OO的方法可以用来做设计,有OO的语言用来做实现。OO最核心的思想就是对象才是我们设计和实现主要关注的东西,而不是过程和控制流。

To focus on things, not operations.

三、面向对象基本原理

OOP的基本理念:对象和对象之间交互的形式是消息,对象之间是互相发送和接收消息的。

消息的五点认识:

1、由发送者发送。

2、由接收者自己来决定执行与否(这一点很重要,初级新手或高手一定要注意!)。

3、消息传递是以函数的方式来实现的。

4、也许可能会使接收者去进行操作进而改变它的状态(与第二点对应,做不做由接收者说了算)。

5、可以给发送者一个反馈(对应到程序设计语言上,就是函数的返回值)。

Class-类。类的鼻祖是亚里士多德,因为他说过一句名言:The bird is bird, the fish is fish.

Class VS Object:概念VS实体。“杯子”是一个抽象的概念,就是一个类。“这只杯子”就是一个具体的实例,就是对象。

OOP的五条原则:

1、所有的东西就是对象。

2、程序就是一堆以发送消息的形式告诉each other去做什么的对象。A program is a bunch of projects telling each other
what to do by sending messages.

3、每个对象都有自己的内存,里面又由其他的对象组成。Each objects has its own memory made of other objects.

4、每个对象都从属于一个类型。Every object has a type. 这句话也在告诉我们,对象都是由类定义出来的。先有类型后有对象。

5、一个特定类型的所有对象可以接收相同的消息。比如所有的杯子都能装水。Every object of a particular type can receive the same messages. 反过来理解的话就是,所有能够接收相同消息的对象都属于同一类型。

面向对象的对外部分:

Object 的 interface 的三点认识:

1、接口interface是接收对象的方式。

2、接口定义在对象所从属的类里。

3、有了接口的好处:有了统一的接口以后,使得一方面接口外的东西是可以换的,另一方面接口内的东西得到了保护。

对内部分:

The hidden implementation

1、隐藏的部分:对象内部的一些细节、表征对象状态的数据成员、在收到消息后自己决定执行的动作,这些是被隐藏起来的。

2、这就对应到两类程序员:class creators VS client programmers。把类放到网上供其他人来用。类的内部细节被隐藏,只有class creator 知道,但是对外提供的接口是固定不变的。

Encapsulation

1、把数据和对这些数据所进行的所有操作放到一个对象里面。数据在里头,操作在外头。

2、把数据和操作细节隐藏起来,只能看到公开出来的部分。

四、自动售票机的例子

如何描述一个类:类的名字、类的属性、类的方法

具体实现过程

1、新建project:project名字全都小写,这个习惯来自于Unix。在Unix中,大写代表很严重的问题,代表惊慌。

2、新建class:class的名字在每个单词的首字母上要大写。新建好之后,会生成两个文件,一个.h和一个.cpp。

3、在.h文件的public部分添加函数原形,也就是告诉这个类里面有一些什么函数。再加入private部分,在private部分里面写有哪些数据成员,长什么样子。

4、在.cpp文件里写函数原形的body。函数原形在刚才的 .h 文件里面声明过,但是没有定义,我们在这里定义。

声明:

定义:

实体:

5、C++程序也需要一个程序启动的地方。通常情况下,我们习惯的做法是再new一个main.cpp。

“<class name>::<function name>”:这两个冒号叫做域的解析符resolver。我们用它想表达的意思是我们想要一个函数,这个函数不是自由的,而是羁绊在某一个类里的,是有家的,有所在的域的。

五、头文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: