C++语言程序设计

我们的周围是一个真实的世界，不论在何处，我们所见到的东西都可以看成是对象。人、动物、工厂、汽车、植物、建筑物、割草机、计算机等等都是对象，现实世界是由对象组成的。
对象多种多样，各种对象的属性也不相同。有的对象有固定的形状，有的对象没有固定的形状，有的对象有生命，有的对象没有生命，有的对象可见，有的对象不可见，有的对象会飞，有的对象会跑，有的对象很高级，而有的对象很原始，…。各个对象也有自己的行为，例如：球的滚动、弹跳和缩小，婴儿的啼哭、睡眠、走路和眨眼，汽车的加速、刹车和转弯，等等。但是，各个对象可能也有一些共同之处，至少它们都是现实世界的组成部分。
人们是通用过研究对象的属性和观察它们的行为而认识对象的。我们可以把对象分成很多类，每一大类中又可分成若干小类，也就是说，类是分层的。同一类的对象具有许多相同的属性和行为，不同类的对象可具有许多相同的属性和类似的行为，例如：婴儿和成人，人和猩猩，小汽车和卡车、四轮马车、冰鞋等等都有共同之处，类是对对象的抽象。
在C++中，就是用类来描述对象的，类是对现实世界的抽象得到的。例如，在真实世界中，同是人类的张三和李四，有许多共同点，但肯定也有许多不同点。当用C++描述时，相同类的对象具有相同的属性和行为，它把对象分为两个部分：数据（相当于属性）和对数据的操作（相当于行为）。我们刻画张三和李四的数据可能用姓名、性别、年龄、职业、住址等，而对数据的操作可能是读或设置它们他们的名字、年龄等。
从程序设计的观点来说，类就是数据类型，是用户定义的数据类型。这种类型的使用虽然与C++内置的数据类型类似，但是也有很大的区别。例如，C++内置的浮点类型并不针对任何具体问题，仅仅与机器的存储单元相对应，而类是用户根据具体问题的需要而定义的，也就是说，类与具体问题相适应。我们可以通过定义所需要的类，来扩展程序设计语言解决问题的能力。
当我们把现实世界分解为一个个的对象，解决现实世界问题的计算机程序也与此相对应，由一个个对象组成，这些程序就称为面向对象的程序，编写面向对象程序的过程就称为面向对象的程序设计（Object-Oriented Programming，简称为OOP）。OOP技术能够将许多现实的问题归纳成为一个简单解，支持OOP的语言也很多，C++是应用最广泛的、支持OOP的语言，第一个成功的支持OOP的语言是Smalltalk。
面向对象的程序设计（OOP）使用软件的方法模拟真实世界的对象，它利用了类的关系，即同一对象（如同一类运载工具）具有相同的特点；还利用了继承甚至多重继承的关系，即新建的对象类是通过继承现有类的特点而派生出来的，但是又包含了其自身特有的特点，如子女有父母的许多特点，但是矮个子父母的子女也可能是高个子。
面向对象的程序设计（OOP）使程序设计过程更自然和直观。也就是说，面向对象的程序设计模拟了真实世界的对象（它们的属性和行为）。OOP还模拟了对象之间的通信，就像人们之间互送消息一样（如军官命令部队立正），对象也是通过消息进行通信的。