初识C++

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
欢迎各位→点赞 + 收藏⭐ + 留言​

好累也得撑下去,走着走着总会出来的!

 一起加油! 

目录

 

前言:

 面向对象技术的基本概念

☘️面向过程与面向对象:

 ☘️类与对象:

☘️封装和消息 :

 面向对象技术的基本特征

☘️抽象性:

☘️封装性 :

☘️继承性:

☘️多态性 :

C++对面向对象技术的支持 

☘️C++的发展历史:

☘️C++——带类的 C 语言 :

 ☘️C++的优点与缺点 :

C++的优点: 

C++的缺点 :


前言:

        面向对象技术使软件开发的方法与过程尽可能地接近人类认识世界、分析问题、解决问题的方法与过程。与过程化的程序设计方法不同,它能更直接地描述客观世界,通过增加代码的可重用性、可扩充性和程序自动生成功能提高编程效率,进而大大提高软件开发效率减小软件维护的开销

 面向对象技术的基本概念

☘️面向过程与面向对象:

        面向对象技术强调在软件开发客观世过程中面向界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。相对于过程化的程序设计方法,面向对象技术更符合人对客观世界的认识规律
        在面向对象方法出现以前,序员都采用面向过程的程序设计方法。早期的计算机主要被设计用来进行数据计算,例如:最初是为了计算炮弹的飞行轨迹。为了完成计算任务,需要将计算过程分解为若干个步骤完成,软件设计的主要工作是分解问题,并设计求解问题的过程。
        随着计算机硬件系统的高速发展,计算机的应用领域不仅仅限于数学计算,它所处理的问题的规模也变得日益庞大、复杂,程序也越来越庞大。传统的面向过程的方法中数据和针对数据的操作在实质上高度依赖,但在形式上又是绝对分离的。这种矛盾使得大型程序后期的升级、维护变得异常复杂。当需要多人合作编写程序完成任务时,程序员之间很难读懂对方的代码,更谈不上代码的使用,软件开发周期无限期延后,基于这些原因,面向对象技术应运而生。
        面向对象技术将数据及对数据的操作放在一起,成为一个不可分割的整体一对象。针对同类对象抽象出共同的数据和操作,形成;根据需要,设定类中大部分的数据只能被本类的方法处理;设定一些外部接口与外界发生关系,对象与对象之间通过消息进行通信
         面向对象的软件开发方法使开发软件的方法与过程尽可能地接近人类认识世界、分析问题和解决问题的方法和过程。面向对象的软件开发技术是以面向对象方法学为基本指导思想的软件开发技术。

 ☘️类与对象:

        与人们认识客观世界的规律相同,面向对象技术认为客观世界是由各种各样的对象组成的在要解决的问题中,客观存在很多事物,对象是对这些事物的抽象每个对象都有自己的特征包括静态特征 (一般用数据来描述 )和动态特征(对所表现的行为或具有的功能)。
        把系统中要考虑的对象归类,在归类的过程中忽略与当前要考虑的系统无关的特征,只考虑那些与当前目标有关的本质特征,从而找到事物的共性,把具有相同属性和行为的对象划为一类并通过一个统一的概念来描述它。例如:学生、教师、教室等。

        将具有相同特征的对象集抽象就形成了类。类为属于该类的全部对象提供了统一的抽象描述类是生成对象的模板,其内部包括属性(数据)行为(操作)两个部分。通过类可以生成一个具体的对象,对象是类的一个实例

☘️封装和消息 :

        消息是描述事件发生的信息消息是对象之间发出的行为请求封装使得对象成为一个独立的实体消息则使得对象之间动态地联系起来,对象的行为能互相配合,构成一个有机的运行系统。

        封装信息的隐蔽性反映了事物的相对独立性,用户可以只关心它对外所提供的接口,即能做什么,而不注意其内部细节,即怎么提供这些服务。封装对于用户而言,使得操作变得更加简单对于对象本身而言,封装使得使用者不能随意去修改对象内部的属性,使对象安全性得到提高。用陶瓷封装起来的一块集成电路芯片,其内部电路是不可见的,而且使用者也不关心它的内部结构,只关心芯片引脚的个数、引脚的电气参数及引脚提供的功能,通过这些引脚,使用者就能将各种不同的芯片连接起来,就能组装成具有一定功能的模块。一个封装起来的电视机对于使用者来说,只需要了解基本的开关按钮、调换频道、调音量按钮等功能,而不需要知道电视机内部复杂的结构就可以很方便地使用它。对于电视机对象而言,封装使对象本身更加安全;对于电视机对象的使用者来说,封装使操作变得更加简单。
        一方面,封装使对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响大大减小了查错和排错的难度;另一方面,即使对象内部被修改,由于它只通过少量的外部接口对外提供服务,因此同样减小了内部的修改对使用者的影响
        封装机制将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需要使用设计者提供的外部接口。封装实际上隐藏了内部结构复杂性,并提高了代码重用性,从而降低了软件开发的难度

 面向对象技术的基本特征

        面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述了客观世界中的有关事物。面向对象技术的基本特征包括: 抽象性、封装性、继承性和多态性。 

☘️抽象性:

        忽略事物中与当前目标无关的非本质特征抓住事物中与当前目标有关的本质特征。找出系统中事物之间的共性,并把具有共性的事物划为一类。例如,在设计一个学生成绩管理系统时考察学生李三这个对象时,只考虑他的学号、专业、成绩等,忽略他的身高、体重等信息。

☘️封装性 :

        封装性是把对象的属性和行为组合在一起作为一个独立的单位,同时对外隐藏内部细节。封装有两层含义:一是把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。对象的属性值(除了公有的属性值)只能由这个对象的行为来读取和修改,二是尽可能隐藏对象的内部细节,对外形成一道屏障,只能通过外部接口实现与外部的联系。

☘️继承性:

        继承(Inheritance)是一种联结类与类的层次模型继承性是指特殊类的对象拥有其一般类的属性和行为。继承意味着“自动地拥有”,即特殊类中不必重新定义已在一般类中定义过的属性和行为,它会自动地拥有其一般类的属性与行为。        

☘️多态性 :

        多态性 (Polymorphism) 是指不同的类可以有同名的方法但它们的具体实现和结果可以各不相同。可以使用相同的方法请求,同一消息为不同的对象接受时可产生完全不同的结果。

C++对面向对象技术的支持 

☘️C++的发展历史:

        C++是在 C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。C语言是1972 年由美国贝尔实验室的 D.MRitchie 开发,它采用结构化编程方法,遵从自顶向下的原则。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C 语言明显优于其他高级语言,但在编写大型程序时,C 语言仍面临着挑战。1983年,在C语言的基础上,贝尔实验室的 Bjare Stroustrup 推出了C++。C++进一步扩充和完善了C语言,是一种面向对象的程序设计语言,它支持过程化程序设计方法,增加了面向对象的能力,是一种混合型程序设计语言。为了扩充 C++的设计能力,许多大学和公司为C++编写了各种不同的类库,如 Microsoft 公司的MFC,奇趣公司的 Qt,MFC 在国内外都得到了广泛应用,Qt 支持移动平台的特性也得到了广泛应用。
        C++目前在各个领域都有广泛的应用。早期它主要应用于系统程序设计,很多系统的关键部分都用 C++设计;C++还用于编写设备驱动程序,或者其他对运行效率及响应时间有特殊要求的系统中,如电信领域核心控制程序。C++还能被应用到游戏、图画、设计等领域

☘️C++——带类的 C 语言 :

        C语言是 C++的基础,C++和 C 语言在很多方面是兼容的。C 语言是一个结构化语言,它的重点在于算法与数据结构。C 语言程序的设计首先考虑的是如何通过一个过程,对输人(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)而C++程序,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物 )控制。所以 C 和C++的最大区别在于它们解决问题的思想方法。
C++对 C语言的“增强”,表现在以下六个方面。
(1)类型检查更为严格。
(2)增加了面向对象的机制。

(3)增加了泛型编程的机制 ( Template )。

(4)增加了异常处理。

(5)增加了运算符重载。

(6)增加了标准模板库(STL)

 ☘️C++的优点与缺点 :

C++的优点: 

        C++简洁灵活运算符的数据结构丰富具有结构化控制语句程序执行效率高。而且 C++司时具有高级语言与汇编语言的优点,与其他高级语言相比,C++具有可以直接访问物理地址的优点;与汇编语言相比又具有良好的可读性的可移植性
        总之,C++的主要特点表现在两个方面,一是兼容 C 语言,二是支持面向对象的方法。它保持了 C 语言的简洁、高效的接近汇编语言等特点,对 C 语言的类型系统进行了改良和扩充,因此C++比 C 语言更安全,C++的编译系统也能检查出更多的类型错误。另外,由于 C 语言的广泛使用,在一定程度上也促进了 C++的普及和推广。

        C++最有意义的方面是支持面向对象的特征。虽然与 C语言的兼容使得 C++具有双重特点但他在概念上与 C 语言完全不同,更具面向对象的特征。出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库( 如 STL)或其他的形式提供的,而没有直接添加到语言本身里。
        C++引人了面向对象的概念,使得开发人机交互类型的应用程序变得更为简单、快捷。包括Boost、Qt、MFC、OWL、wxWidgets、WTL 在内的很多优秀的人们一般认为,使用 Java 或 C#的开发成本比 C++低。但是,如果充分分析 C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过 3 万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是 C++的软件工程性。程序框架都使用 C++。

C++的缺点 :

        C++由于语言本身过度复杂,甚至使人们难以理解其语义。C++的编译系统受到 C++的复杂性的影响,非常难以编写,即使能够使用的编译器也存在了大量的问题,这些问题大多很难被发现。由于本身的复杂性,复杂C++程序的正确性也难以保证。 

         最后,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。若这篇文章中有哪些不正确的内容,欢迎大家在评论区和我交流讨论! 

你可能感兴趣的:(C++面向对象程序设计技术,开发语言,c++)