C语言是面向什么的程序设计语言

C语言是面向什么的程序设计语言,第1张

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。

C语言基本特性:

1、C是高级语言:它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行 *** 作,而这三者是计算机最基本的工作单元。

2、C是结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于编码、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

3、C语言功能齐全:具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。

4、C语言适用范围大:适合于多种 *** 作系统,如Windows、linux、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行 *** 作的场合,优于其它高级语言,有一些大型应用软件也是用C语言编写的。

5、C语言应用指针:可以直接进行靠近硬件的 *** 作,但是C的指针 *** 作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针 *** 作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针 *** 作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。

6、C语言文件由数据序列组成:可以构成二进制文件或文本文件常用的C语言IDE(集成开发环境)有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++,Borland C++ Builder,GNU DJGPP C++,Lccwin32 C Compiler 31,High C,Turbo C,C-Free,win-tc,xcode(mac os x)等。

结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的"很随意"的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。比如:C,FORTRAN,PASCAL等等

结构化程序设计方法主要由以下三种逻辑结构组成:

1)顺序结构:顺序结构是一种线性、有序的结构,它依次执行各语句模块。

2)循环结构:循环结构是重复执行一个或几个模块,直到满足某一条件为止。

3)选择结构:选择结构是根据条件成立与否选择程序执行的通路。

采用结构化程序设计方法,程序结构清晰,易于阅读、测试、排错和修改。由于每个模块执行单一功能,模块间联系较少,使程序编制比过去更简单,程序更可靠,而且增加了可维护性,每个模块可以独立编制、测试。

面向对象程序语言中支持的对象具有三个明显得特征:

封装、继承、多态;而Javascript在类别和副本上并没有明显地分界。事实上,Javascript语言中所有的变量数据类型在JS中都是对象。JS总共支持4种对象:内置对象、自定义对象、浏览器程序对象和ActiveX对象。 return this只是返回该对象,以便别处引用,但并不是多出一个对象。

所以,面向过程的程序设计中:程序=算法+数据结构

数据结构和算法相分离的,所以,系统庞大后,它的控制、移植、重用就成了问题。

而在面向对象的程序设计中:

对象=数据结构+算法

程序=对象+对象+

所以克服了面向过程的设计中存在的问题。

对象内部数据结构的不可访问性 输入数据必须用保密密码输入,数据加密,这不是面向对象编程的特点;不可能在对象的内部数据结构上建立防火墙,所以它们不是面向对象编程中的数据隐藏。面向对象编程系统中的封装单元是对象,对象之间只能通过接口交换信息,对象中的数据不能从外部随意访问,导致对象内部的数据结构不可访问,数据隐藏在对象中。这就是面向对象编程中的数据隐藏所指的。Redis是一个键-值对数据库,每个键是一个字符串对象,值可以是字符串对象、列表对象、哈希对象、集合对象、有序集合对象五种中的一种。Redis使用sds(简单动态字符串)来表示最基本的字符串数据。这个结构记录了用于保存字符串的字节数组char buf[]、已用长度int len和未用长度int free。有点像java中的字符串对象。这个sds使用C字符串作为文字量,遵循C风格,以空字符' \0 '作为字符串的结尾,这样就可以直接重用C字符串函数库的部分函数,但与C字符串相比,它有以下优点:直接保存字符串长度而不是像C一样遍历得到长度;通过预分配空间和释放惰性空间,减少了修改字符串引起的内存重分配。空间预分配的意思是:当需要扩展字符数组的容量时,如果分配的长度将小于1MB,则预分配与当前len长度相同的字节数,如果超过1MB,则分配1MB。惰性空间释放是指当sds字符串被缩短时,多余的字节数组不被回收,而是通过增长free来记录,这样下次如果free本身足够了,就不需要申请内存了。当然,也有可以调整为主动释放的API。用二进制方法处理buf数组,保留二进制数据,这样就可以保存除文本数据以外的其他格式,比如、音视频、压缩文件等。

1、Smalltalk

Smalltalk被公认为历史上第二个面向对象的程序设计语言和第一个真正的集成开发环境 (IDE)。由Alan Kay,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC开发。

Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:Objective-C,Actor, Java 和Ruby等。90年代的许多软件开发思想得利于Smalltalk,例如Design Patterns, Extreme Programming(XP)和Refactoring等。

2、Eiffel

Eiffel语言是继Smalltalk-80之后的另一个"纯"OOPL。这种语言是由OOP领域中著名的专家Bertrand Meyer等人20世纪80年代后期在ISE公司(Interactive Software Engineering Inc)开发的,它的主要特点是全面的静态类型化、有大量的开发工具、支持多继承。

3、C++

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。

C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

4、Java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。

扩展资料:

面向对象程序设计的原则:

1、单一职责原则:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。

单一职责原则是实现高内聚、低耦合的要素。类的职责主要包括两个方面:数据职责和行为职责,数据职责是通过其属性来体现的,行为职责是通过其方法来体现。如果职责过多将导致系统非常的脆弱,类被复用的可能性就越少,一个职责可能会影响其他职责。

2、开闭原则:一个软件实体应当对扩展开放,对修改关闭。

任何软件都需要面临一个问题,当软件系统需要面对新的需求时,我们要保证系统的设计框架是稳定的。为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。百分百的开闭原则很难达到,但是要尽量使系统设计符合开闭原则。

3、里氏代换原则:所有引用基类(父类)的地方必须透明地使用其子类的对象。

里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象代替父类对象。子类的所有方法必须在父类中声明,或子类必须实现父类中声明的所有方法。

4、依赖倒转原则:高层模块不应该依赖低层模块,他们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。

依赖倒转原则是面向对象设计的主要手段。在代码中使用抽象类,而具体类放在配置文件中。里氏代换原则是依赖倒转原则的基础。如果系统行为发生变化,只需要扩展抽象层,并修改配置文件,而无需修改原有系统的源代码,满足开闭原则的设计要求。

5、接口隔离原则:客户端不应该依赖那些他不需要的接口。

首先需要满足单一职责原则。将一组相关的 *** 作定义在一个接口中,在满足高内聚的前提下,接口中的方法越少越好。可以在进行系统设计时采用定制服务的方式。

6、合成复用原则定义:尽量使用对象组合,而不是继承来达到复用的目的。

通过继承来实现复用很简单,而且子类易于扩展。但其主要问题是会破坏系统的封装性,继承会将基类的实现细节暴露给子类。同时没有足够的灵活性,如果基类发生变化,子类的实现也不得不发生改变。

7、迪米特法则原:每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。

在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限。在类的设计上,只要有可能,一个类型应当设计成不变类。一个对象对其他对象的引用,应当降到最低。

参考资料:

百度百科-面向对象程序设计语言

对数据的 *** 作。面向对象语言包含3个要素,即对象、类和继承。这3个要素反映了面向对象的传统观念。面向对象程序设计的本质是把数据和对数据的 *** 作当成一个整体即对象。程序指计算机程序,是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。

面向过程编程实际上就是将一个程序要实现的功能分解为一系列的一步骤,这些步骤在分解,递归下去直到你能用函数容易实现这个步骤为止,然后从下往上,高层次的步骤由低层次的步骤组装,直到实现整个程序的功能。面向过程可以认为是一种算法分解。

面向对象编程则是将一个程序的功能分派给一系列对象去完成,然后这些对象在分解,直到你能容易实现对象为止,然后这些对象相互协作实现了程序的功能。程序中的每个对象有自己的状态和行为,具有一定的工作能力。面向对象的一个重要方面就是去描述对象,以及他们之间的关系。对象之间有的对象具有共同属性和行为,这些共性我们通过类来描述(抽象和封装),然而不同类之间也有一定的相似,这时我们通过基类来描述这些类的共性(继承),然而即使具有相同的行为,不同对象具体的行为方式也可能不同,这时我们在基类中使用虚函数来描述这种差异(多态)。有的对象是作为其他的一部分存在,这时我们将这个对象作为其他对象的类的成员变量来描述(组合和聚合)。

这大概就是区别了。

面向对象的思维我们日常生活就在使用。

例如考虑汽车的制造:

如果你讲汽车的制造看做是一系列工序,那么你用的思维就是面向过程的;如果你将汽车的制造看做是一台台机器人相互协作的过程,那你用的就是面向对象思维了。

以上就是关于C语言是面向什么的程序设计语言全部的内容,包括:C语言是面向什么的程序设计语言、什么是面向过程的程序设计、面向对象程序设计中的数据封装指的是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9358273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存