面向对象的程序设计C++课堂复盘总结 C语言复习+C++基础语法

news2024/11/28 18:53:27

 

 Stay Hungry,Stay Foolish.

任何人都能写出机器能看懂的代码,但只有优秀的程序员才能写出人能看懂的代码。

有两种写程序的方式:一种是把代码写得非常复杂,以至于 “看不出明显的错误”;另一种是把代码写得非常简单,以至于 “明显看不出错误”。

“把正确的代码改快速”,要比 “把快速的代码改正确”,容易得太多。

C++ 庞大、复杂是无法改变的事实,所以我们要把这三条格言铭记在心,对它保持一颗 “敬畏” 的心,在学习语言特性的同时,千万不要滥用特性,谦虚谨慎,戒骄戒躁。                -------CSDN Albert Edison

恰逢研究生考试成绩出分,在此恭祝所有人第一志愿上岸,以后要考研的人也都能更上一层楼!

 

aa9652581c9d47deb72a2e630b4bab67.jpeg

 

目录

面向对象的程序设计:

1. 面向过程

2. 面向对象

3. 优缺点比较

          面向过程

面向对象

课程目标

C++版本更迭: 

易错点总结: 

 

 

 

面向对象的程序设计:

面向对象与面向过程的区别与联系_心亦无忧的博客-CSDN博客_面向对象和面向过程的区别

 面向过程 VS 面向对象

学习编程, 基本功是掌握编程语言,但编程的本质是逻辑,所以编程思维的培养也很重要。面向过程和面向对象是两种重要的编程思想,下面讲述一下这两者的区别和优缺点比较。

1. 面向过程

面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。

 

85bbcf8e7654ff560720bf1f2dc66848.png

举个例子,下五子棋,面向过程的设计思路是首先分析解决这个问题的步骤:

(1)开始游戏(2)黑子先走(3)绘制画面(4)判断输赢(5)轮到白子(6)绘制画面(7)判断输赢(8)返回步骤(2) (9)输出最后结果。

用函数实现上面一个一个的步骤,然后在下五子棋的主函数里依次调用上面的函数(不同的编程语言有不同的调用方法,我这里写的是直接调用):

下五子棋{

开始游戏();

黑子先走();

绘制画面();

判断输赢();

轮到白子();

绘制画面();

判断输赢();

返回到 黑子先走();

输出最后结果;

}

可见,面向过程始终关注的是怎么一步一步地判断棋局输赢的,通过控制代码,从而实现函数的顺序执行。

2. 面向对象

在日常生活或编程中,简单的问题可以用面向过程的思路来解决,直接有效,但是当问题的规模变得更大时,用面向过程的思想是远远不够的。所以慢慢就出现了面向对象的编程思想。世界上有很多人和事物,每一个都可以看做一个对象,而每个对象都有自己的属性和行为,对象与对象之间通过方法来交互。面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。

 

在下五子棋的例子中,用面向对象的方法来解决的话,首先将整个五子棋游戏分为三个对象:

(1)黑白双方,这两方的行为是一样的。

(2)棋盘系统,负责绘制画面

(3)规则系统,负责判定犯规、输赢等。

然后赋予每个对象一些属性和行为:

(4)第一类对象(黑白双方)负责接受用户输入,并告知第二类对象(棋盘系统)棋子布局的变化,棋盘系统接收到了棋子的变化,并负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以看出,面向对象是以功能来划分问题,而不是以步骤解决。比如绘制画面这个行为,在面向过程中是分散在了多个步骤中的,可能会出现不同的绘制版本,所以要考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘系统这个对象中出现,从而保证了绘图的统一。

 

3. 优缺点比较

面向过程

优点:

流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。

效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序。

缺点:

需要深入的思考,耗费精力,代码重用性低,扩展能力差,后期维护难度比较大。

面向对象

优点:

结构清晰,程序是模块化和结构化,更加符合人类的思维方式;

易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统;

易维护,系统低耦合的特点有利于减少程序的后期维护工作量。

缺点:

开销大,当要修改对象内部时,对象的属性不允许外部直接存取,所以要增加许多没有其他意义、只负责读或写的行为。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。

性能低,由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小都开销很大。

 

254e01ea4ec16435cd32a9daf88d5066.jpeg

举例说明两者的优缺点,比如在五子棋游戏中增加悔棋的功能。在面向过程中,从输入到显示再到最后判断的整个步骤都要改动,甚至函数的调用顺序也要改动,而在面向对象的设计中,只需在棋盘系统中增加一个回溯的功能就可以了,黑白双方和规则系统的属性和行为都不需改动。这个例子说明了面向对象程序设计中代码间的相关性低(低耦合特性),使得代码很容易被复用和扩展,同时也说明了面向过程的代码重用性低、扩展能力差。

 

c++中可以使用x=float(i)来强行转换数据类型 

                                函数形式的数据转换

76e5e2b3d8b34dbe8ef4d3312314fe4a.jpeg

课程目标

1.理解面向对象程序设计的基本原理,掌握面向对象技术的基本概念和封装性、继承性和多态性,能够具有面向对象程序设计思想。掌握C++语言面向对象的基本特性和C++语言基础知识,能够使用C++语言进行计算机工程领域复杂工程问题的表述,能够进行C++程序阅读和分析。

2.理解C++语言中的面向对象机制,掌握C++程序设计的一般流程、基本方法和技能。能够综合应用基础知识对复杂的计算机系统工程问题进行用户需求分析,并能够采用面向对象方法进行程序设计。

3.熟练掌握VC++集成开发工具的使用方法和技巧,能正确编辑、编译和调试C++语言程序,能够具有良好的程序调试和动手编程能力,并能够利用计算机软件对计算机领域的复杂工程问题进行面向对象分析,建立面向对象的系统模型,并对分析阶段建立的对象模型进行面向对象设计。

 

f717350e58be43b898354bc93f7fa701.jpeg

 bc007440d7424078aa5df8f80665ca68.jpeg802b9560d6a840b6a94a8cda19e5cdb8.jpeg3e7a858bb6eb42b6bec790b83b63186c.jpegc5b4e04eaba14a6486e1c97ba27236e9.jpeg9c4938853f7e4973b6e2d27bd0aee5ad.jpegb66ef7e090af48b4bfd020af82d5c18e.jpeg79294dc57e5c4946808863be1818fa5d.jpeg3c26252928b44b6697641561010f6e16.jpegb418cced00944a34860055f33e81aca5.jpeg577ea7232bee4c3f863b893af35b02b1.jpeg

551f7b1003734036a0fa77d00c6836a4.jpeg2a7c4a3ea9d74bd591d51cc34c56f226.jpeged3e03cd3b094f2cbbfcb92529ae9e96.jpeg

C++版本更迭: 

c6d7cb5b141e4c41ada813e79f20289c.png

易错点总结: 

1.int a*p此处int的含义是指针的基类型

2.Struct Student*p age=

    p=&stu 1

3.if (x=1)赋值语句

   if (x==1)判断           

4.顺序求值表达式>>最终会得到一个值

int x=6,y>x,y=x,y++;

printf(“%d\n”,y>x,y=x,y++;);

输出结果会为6

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c/c++开发,无可避免的模板编程实践(篇八)

一、借用标准库模板构造自己的模板 通常,模板设计是遵循当对象的类型不影响类中函数的行为时就使用模板。这也就是为何标准库提供大部分的模板都是与容器、迭代器、适配器、通用算法等有关,因为这些主要是除了对象集合行为,如读写、增删、遍历…

Java ”框架 = 注解 + 反射 + 设计模式“ 之 注解详解

Java ”框架 注解 反射 设计模式“ 之 注解详解 每博一文案 刹那间我真想令时光停住,好让我回顾自己,回顾失去的年华,缅怀哪个穿一身短小的连衣裙 和瘦窄的短衫的小女孩。让我追悔少年时代,我心灵的愚钝无知,它轻易…

oracle11g忘记system密码,重置密码

OPW-00001: 无法打开口令文件 cmd.exe 使用管理员身份登录 找到xxx\product\11.2.0\dbhome_1\database\PWDorcl.ora文件,删除 执行orapwd fileD:\app\product\11.2.0\dbhome_1\database\PWDorcl.ora passwordtiger (orapwd 在\product\11.2.0\dbhome_1\BIN目录下…

DolphinScheduler第一章:环境安装

系列文章目录 DolphinScheduler第一章:环境安装 文章目录系列文章目录前言一、环境准备1.上传文件2.数据库配置3.配置安装文件二、集群部署1.数据部署2.部署 DolphinScheduler3. DolphinScheduler 启停命令总结前言 我们现在开始学习hadoop中的DolphinScheduler组…

Vim 命令速查表

Vim 命令速查表 简介:Vim 命令速查表,注释化 vimrc 配置文件,经典 Vim 键盘图,实用 Vim 书籍,Markdown 格式,目录化检索,系统化学习,快速熟悉使用! Vim 官网 | Vim | Vim…

小学生学Arduino---------点阵(三)动态的显示与清除

学习目标: 1、理解“整数值”的概念与使用 2、理解“N1”指令的意义 3、掌握“反复执行多次”指令的使用 4、掌握屏幕模块的清除功能指令 5、理解“反复执行”指令与“反复执行多次”指令的嵌套使用 6、搭建电路图 7、编写程序 效果: 整数包括&#xf…

HTTP cookie格式与约束

cookie是前端编程当中经常要使用到的概念,我们可以使用cookie利用浏览器来存放用户的状态信息保存用户做了一些什么事情。session是服务器端维护的状态。session又是如何和cookie关联起来。后面介绍cookie和session的使用。Cookie 是什么?RFC6265, HTTP …

2022-2023年营销报告(B站平台) | 5大行业势态、流量大盘全景洞察

一直以来,手持高活跃、高粘性用户群体的B站是行业用来观察年轻人消费习惯的重要平台。以至于用户群体的不断壮大带动了B站的商业价值。如今B站的商业舞台越来越大,不断地向外界招手,欢迎更多品牌积极加入到这个千万年轻人聚集的内容社区。为了…

如何使用Kadence Blocks构建迷人的Kadence产品网格

在本教程中,我将逐步教您如何使用 Kadence Blocks 构建一个五列Kadence产品网格,它可以作为全宽区块放置在您的博客文章的顶部。使用这个包含五列的产品网格是在文章顶部展示产品、对每个产品进行简要描述,然后包含一个供用户访问该站点的按钮…

校园社交平台【源码好优多】

简介 本项目是为满足大学生的校园社交需求而设计的,动态模块提供发布/删除/搜索/点赞/收藏/评论动态功能,个人模块提供关注与私信以及用户修改个人信息功能,聊天模块提供即时聊天功能。该项目为前后端分离项目并且后端实现分布式&#xff0c…

蓝桥杯入门即劝退(十九)两两交换链表

-----持续更新蓝桥杯入门系列算法实例-------- 如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流! 你的点赞、关注、评论、是我创作的动力! -------希望我的文章对你有所帮助-------- 一、题目描述 给你一个链表,两两交换其中…

JavaEE简单示例——<select>中的查询参数传递和结果集封装自动映射关系

简单介绍&#xff1a; 在之前我们在讲SQL映射文件中的映射查询语句的<select>标签的时候&#xff0c;对其中的四个常用属性的讲解并不是那么的透彻&#xff0c;今天就来详细的解释<select>的四个常用属性的具体含义以及<select>标签在进行查询的时候查询参数…

LQB02控制LED灯,74HC138芯片,74HC02芯片,74HC573芯片。

一&#xff0c;硬件图解读。 二&#xff0c;控制LED需要的74HC595程序编程。 三&#xff0c;控制某个LED亮&#xff0c;其他保持不变&#xff0c;或者控制整8个LED&#xff0c;其他不变&#xff1b; 四&#xff0c;读取某个LED的状态&#xff0c;一秒时间读取一次&#xff0c;如…

mapreduce与yarn

文章目录一、MapReduce1.1、MapReduce思想1.2、MapReduce实例进程1.3、MapReduce阶段组成1.4、MapReduce数据类型1.5、MapReduce关键类1.6、MapReduce执行流程1.6.1、Map阶段执行流程1.6.2、Map的shuffle阶段执行流程1.6.3、Reduce阶段执行流程1.7、MapReduce实例WordCount二、…

版本控制软件SVN

SVN学习 1 版本控制软件定义及用途 版本控制软件是为适应软件配置管理的需要&#xff0c;控制软件的修改&#xff0c;减少混乱&#xff0c;提高软件生产效率&#xff0c;其是软件质量保证的重要环节软件配置管理是对软件修改进行标识、组织和控制的技术&#xff0c;用来协调和…

MASA MAUI Plugin (八)Android相册多选照片(Intent 方式)

背景 MAUI的出现&#xff0c;赋予了广大.Net开发者开发多平台应用的能力&#xff0c;MAUI 是Xamarin.Forms演变而来&#xff0c;但是相比Xamarin性能更好&#xff0c;可扩展性更强&#xff0c;结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项…

代码随想录NO49 | 动态规划 _LeetCode1143.最长公共子序列 1035.不相交的线 53. 最大子序和

动态规划 _LeetCode1143.最长公共子序列 1035.不相交的线 53. 最大子序和今天继续子序列问题&#xff01; 1143.最长公共子序列 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符…

docker全解

目录说明docker简介为什么是docker容器与虚拟机比较容器发展简史传统虚拟机技术容器虚拟化技术docker能干什么带来技术职级的变化开发/运维&#xff08;Devops)新一代开发工程师Docker应用场景why docker&#xff1f;docker的优势docker和dockerHub官网Docker安装CentOS Docker…

10 种 Spring事务失效场景

10 种 Spring事务失效场景 1.概述 Spring针对Java Transaction API (JTA)、JDBC、Hibernate和Java Persistence API(JPA)等事务 API&#xff0c;实现了一致的编程模型&#xff0c;而Spring的声明式事务功能更是提供了极其方便的事务配置方式&#xff0c;配合Spring Boot的自动…

supervisor看守进程

supervisor可以用于看守正在运行的服务&#xff0c;如果服务以外停止&#xff0c;他会在设置的时间间隔内重新启动该服务。 本测试使用的系统是TencentOS3.1. 安装supervisor最简单方法是使用yum。 yum install supervisor supervisor需要python3支持&#xff0c;因此请先确…