面向对象设计原则是OOPS编程的核心,学习面向对象编程像“抽象”、“封装”、“多态”、“继承”等基础知识是重要的,但同时为了创建简洁、模块化的设计,了解这些设计原则也同等重要。
(设计原则)底线是永远追求高内聚、低耦合的编码或设计。Apache和Sun的开源代码是学习和OOPS设计原则的良好范例。它们向我们展示了,设计原则在编程中是如何使用的。JDK使用了一些设计原则:BorderFactory类中的工厂模式、Runtime类中的单例模式、io类中的装饰器模式。顺便说一句,如果您真的对编码原则感兴趣,请阅读JoshuaBloch的Effective,他编写过API。我个人最喜欢的关于面向对象设计模式的是KathySierra的HeadFirstDesignPattern(深入浅出设计模式),以及其它的关于深入浅出面向对象分析和设计。这些书对编写更好的代码有很大帮助,充分利用各种面向对象和SOLID的设计模式。
虽然学习设计模式(原则)最好的方法是现实中的例子和理解违反设计原则带来的不便,本文的宗旨是向那些没有接触过或正处于学习阶段的程序员介绍面向对象设计原则。
DRY_Don’trepeatyourself
我们第一个面向对象设计原则是:DRY,从名称可以看出DRY(don’trepeatyourself)意思是不写重复代码,而是抽象成可复用的代码块。如果您有两处以上相同的代码块,请考虑把它们抽象成一个单独的方法;或者您多次使用了硬编码的值,请把它们设置成公共常量。这种面向对象设计原则的优点是易于维护。重要的是不要滥用此原则,重复不是针对代码而是针对功能来说。它的意思是,如果您使用通用代码来验证OrderID和SSN,这并不意味着它们是相同的或者他们今后将保持不变。通过把通用代码用于实现两种不同的功能,或者您把这两种不同的功能密切地联系在一起;当您的OrderID格式改变时,您的SSN验证代码将会中断。所以要当心这种耦合,而且不要把彼此之间没有任何关系却类似的代码组合在一起。
封装经常修改的代码
EncapsulateWhatChanges
在软件领域永远不变的是“变化”,所以把您认为或怀疑将来要被修改的代码封装起来。这种面向对象设计模式的优点是:易于测试和维护恰当封装的代码。如果您在用编程,那么请遵守以下原则:变量和方法的访问权限默认设置为私有,并且逐步放开它们的访问权限,例如从“private”到“protected”、“notpublic”。中的一些设计模式使用了封装,工厂设计模式就是一个例子,它封装了创建对象的代码而且提供了以下灵活性:后续生成新对象不影响现有的代码。
打开/关闭设计原则
OpenClosedDesignPrinciple
类、方法/函数应当是对扩展(新功能)开放,对修改闭合。这是另外一个优雅的SOLID设计原则,以防止有人修改通过测试的代码。理想情况下假如您添加了新功能,那么您的代码要经过测试,这就是打开/关闭设计原则的目标。顺便说一句,SOLID中的字母“O”指的是打开/关闭设计原则。
单一职责原则
SingleResponsibilityPrinciple(SRP)
单一职责原则是另外一个SOLID设计原则,SOLID中的字母“S”指的就是它。按照SRP,一个类修改的原因应当有且只有一个,或者一个类应当总是实现单一功能。如果您在中的一个类实现了多个功能,那么这些功能之间便产生了耦合关系;如果您修改其中的一个功能,您有可能就打破了这种耦合关系,那么就要进行另一轮测试以避免产生新的问题。
依赖注入/反转原则
DependencyInjectionorInversionprinciple
不要问框架的依赖注入功能将会给你带来什么益处,依赖注入功能在spring框架里已经很好的得到了实现,这一设计原则的优雅之处在于:DI框架注入的任何一个类都易于用模拟对象进行测试,并且更易于维护,因为创建对象的代码在框架里是集中的而且和客户端代码是隔离的。有多种方法可以实现依赖注入,例如使用字节码工具,其中一些AOP(面向切面编程)框架如切入点表达式或者spring里使用的代理。想对这种SOLID设计原则了解更多,请看IOC和DI设计模式中的例子。SOLID中的字母“D”指的就是这种设计原则。
优先使用组合而非继承
ForCompositionoverInheritance
如果可以的话,要优先使用组合而非继承。你们中的一些人可能为此争论,但我发现组合比继承更有灵活性。组合允许在运行时通过设置属性修改一个类的行为,通过使用多态即以接口的形式实现类之间的组合关系,并且为修改组合关系提供了灵活性。甚至Effective也建议优先使用组合而非继承。
里氏替换原则
LiskovSubstitutionPrincipleLSP
根据里氏替换原则,父类出现的地方可以用子类来替换,例如父类的方法或函数被子类对象替换应该没有任何问题。LSP和单一职责原则、接口隔离原则密切相关。如果一个父类的功能比其子类还要多,那么它可能不支持这一功能,而且也违反了LSP设计原则。为了遵循LSPSOLID设计原则,派生类或子类(相对父类比较)必须增强功能,而非减少。SOLID中的字母“L”指的就是LSP设计原则。
接口隔离原则
接口隔离原则指,如果不需要一个接口的功能,那么就不要实现此接口。这大多在以下情况发生:一个接口包含多种功能,而实现类只需要其中一种功能。接口设计是一种棘手的工作,因为一旦发布了接口,您就不能修改它否则会影响实现该接口的类。在中这种设计原则的另一个好处是:接口有一个特点,任何类使用它之前都要实现该接口所有的方法,所以使用功能单一的接口意味着实现更少的方法。
编程以接口(而非实现对象)为中心
编程总是以接口(而非实现对象)为中心,这会使代码的结构灵活,而且任何一个新的接口实现对象都能兼容现有代码结构。所以在中,变量、方法返回值、方法参数的数据类型请使用接口。这是许多程序员的建议,Effective以及headfirstdesignpattern等书也这样建议。
代理原则
不要期望一个类完成所有的功能,电脑培训认为可以适当地把一些功能交给代理类实现。代理原则的典范是:中的equals()和hashCode()方法。为了比较两个对象的内容是否相同,我们让用于比较的类本身完成对比工作而非它们的调用方。这种设计原则的好处是:没有重复编码而且很容易修改类的行为。
C++面向对象程序设计(谭浩强)这本书更为畅销,受到的好评也居多。
90%的人开始学C/C++编程都是从谭浩强教授的《C语言程序设计》和《C++面向对象程序设计》这两本数开端的,在业界这两本书深受初学者的喜爱和好评。
比较权威,而且经过一二十年来修订,书籍中所提到的知识都非常的适合初学者。
建议初学者使用谭浩强的书,不仅可以作为初期学习使用,后期也可以作为参考书。
Ⅰ 大学里计算机科学与技术专业有哪些主修课程需要在哪些方面有基础
楼上列出的课程太多了,计算机科学与技术的主干课就是
1、离散数学
2、c语言(其它语言也可以,比如c++、java)
3、数据结构
4、 *** 作系统
5、数据库原理
6、编译原理
7、软件工程
8、计算机网络
9、计算机体系结构(计算机组成原理)
其它象电子线路、windows/unix编程、图形图像学、微机接口等等看你要做什么了
Ⅱ 大学本科计算机科学与技术专业需要主修哪些课程
1、数字逻辑电路
数字逻辑是计算机专业本科生的一门主要课程,具有自身的理论体系和很强的实践性。它是计算机组成原理的主要先导课程之一,是计算机应用专业关于计算机系纤胜吉构方面的主干课程之一。课程的主要目的是便学生了解和掌握从对数字系统提出要求开始,一直到用集成电路实现所需逻辑功能为止的整个过程的完整知识。
内容有数制和编码、布尔代数和逻辑函数、组台逻辑电路的分析和设计,时序逻辑电路的分析和设计,中、大规模集成电路的应用。通过对该课程的学习,可以为计算机组成原理、微型计算机技术、计算机系纤胜吉构等课程打下坚实的基础。
(2)大学计算机主修课程扩展阅读:计算机科学与技术专业的就业前景
智能化使计算机具有模拟人的感觉和思维过程的能力,使计算机成为智能计算机。这也是目前正在研制的新一代计算机要实现的目标。智能化的研究包括模式识别、图像识别、自然语言的生成和理解、博弈、定理自动证明、自动程序设计、专家系统、学习系统和智能机器人等,已研制出多种具有人的部分智能的机器人。
网络化是计算机发展的又一个重要趋势。从单机走向联网是计算机应用发展的必然结果。所谓计算机网络化,是指用现代通信技术和计算机技术把分布在不同地点的计算机互联起来,组成一个规模大、功能强、可以互相通信的网络结构。
多媒体计算机是当前计算机领域中最引人注目的高新技术之一。多媒体计算机就是利用计算机技术、通信技术和大众传播技术,来综合处理多种媒体信息的计算机。这些信息包括文本、视频图像、图形、声音、文字等。多媒体技术使多种信息建立了有机联系,并集成为一个具有人机交互性的系统。多媒体计算机将真正改善人机界面,使计算机朝着人类接受和处理信息的最自然的方式发展。
Ⅲ 大学计算机有哪些专业课程
计算机应用基础、应用文写作、数学、英语、德育、电工与电子技术、计算机网络技术、C语言、计算机组装与维修、企业网安全高级技术、企业网综合管理、windows server 2008 *** 作系统、局域网组建。
Linux服务器 *** 作系统、网络设备与网络技术(主要学习思科、华为公司设备的配置、管理、调试)、SQL Server、网络综合布线技术、CAD绘图等。
主要课程:
电子商务设备与工具安全 *** 作与维护、电子商务流程、电子商务网站设计与制作、网络营销实务、电子商务数据安全实务、条码编制实务等。
(3)大学计算机主修课程扩展阅读
计算机专业人才的培养目标有很多,就大学计算机专业的设置来看,大致可以概括为以下几个方面:
一、计算机软件与理论
本专业主要培养具有较强理论基础和设计、开发软件能力的软件人才,以满足软件开发、技术管理、科学研究和高等教育等多层次的社会需要。
二、计算机应用技术
本专业主要培养计算机应用技术领域的各类开发、研究、应用人才。
毕业生适合的工作有:高等院校计算机科学与技术的教师和研究人员、中小型控制系统的设计实施人员、大型控制系统的应用人员、企业级MIS/ERP建设人员、基于Inter/Intra的多媒体应用程序开发人员、数字通讯领域各类应用人员、大中型企业及涉外企业IT部门的工作人员。
三、计算机系统(体系)结构
本专业以并行处理、容错计算等为主要研究方向,所开设的课程反映当前国内外计算机系统结构学科的发展水平。培养学生的计算机软硬件基础,以及熟练的以计算机为手段独立研究与设计计算机系统的能力和计算机应用、软件开发能力。
Ⅳ 大学里计算机专业都学什么啊
大学里计算机专业要学习的课程包括三部分:
1、基本的公共课程:大学英语、高等数学、线性代数、 思想概论、大学生思想道德修养等。
2、基础的专业课程:计算机组成原理、计算机应用基础、电脑 *** 作、电脑认知与拆装等。
3、核心的专业课程:计算机网络、计算机组成原理、 *** 作系统、编译原理、数据结构与算法、数据库原理、网页设计、C语言程序设计、C++面向对象设计、数据库应用微型计算机技术、单片机技术、嵌入式系统、嵌入式 *** 作系统、嵌入式设计与应用、数字逻辑电路、电路电子技术、移动设备应用软件开发等。
计算机专业实践教学包括工程训练、计算机应用基础、训练、认识实习、生产实习、毕业实习、教学实验、社会实践、课程设计、综合设计、毕业设计(论文)等环节。
Ⅳ 大学计算机专业主要有什么课程
本专业开设的主要课程有:电子技术、离散数学、程序设计、数据结构、 *** 作系统、计算机组成原理、微机系统、计算机系统结构、编译原理、计算机网络、数据库系统、软件工程、人工智能、计算机图形学、数字图像处理、计算机通讯原理、多媒体信息处理技术、数字信号处理、计算机控制、网络计算、算法设计与分析、信息安全、应用密码学基础、信息对抗、移动计算、数论与有限域基础、人机界面设计、面向对象程序设计等。
Ⅵ 计算机专业有哪些课程
主要课程有计算机应用基础、应用文写作、数学、英语、德育、电工与电子技术、计算机网络技术、C语言、计算机组装与维修、企业网安全高级技术、企业网综合管理、windows server 2008 *** 作系统。
还有局域网组建、Linux服务器 *** 作系统、网络设备与网络技术(主要学习思科、华为公司设备的配置、管理、调试)、SQL Server、网络综合布线技术、CAD绘图等。
计算机学科的特色主要体现在:理论性强,实践性强,发展迅速按一级学科培养基础扎实的宽口径人才,体现在重视数学、逻辑、数据结构、算法、电子设计、计算机体系结构和系统软件等方面的理论基础和专业技术基础。
(6)大学计算机主修课程扩展阅读
计算机专业培养目标
本专业毕业生应获得以下几个方面的知识和能力:
1、掌握电子技术和计算机组成与体系结构的基本原理、分析方法和实验技能,能从事计算机硬件系统开发与设计。
2、掌握程序设计语言、算法与数据结构、 *** 作系统以及软件设计方法和工程的基本理论、基本知识与基本技能,具有较强的程序设计能力,能从事系统软件和大型应用软件的开发与研制。
3、掌握并行处理、分布式系统、网络与通信、多媒体信息处理、计算机安全、图形图象处理以及计算机辅助设计等方面的基本理论、分析方法和工程实践技能,具有计算机应用和开发的能力。
4、掌握计算机科学的基本理论,具有从事计算机科学研究的坚实基础。
Ⅶ 计算机专业主修课程都有什么
主干学科:计算机科学与技术
主要课程:电路原理、模拟电子技术、数字逻辑、数字分析、计算机原理、微型计算机技术、计算机系统结构、计算机网络、高级语言、汇编语言、数据结构、 *** 作系统等。
主要实践性教学环节:包括电子工艺实习、硬件部件设计及调试、计算机基础训练、课程设计、计算机工程实践、生产实习、毕业设计(论文)。
计算机学科的特色主要体现在:理论性强,实践性强,发展迅速按一级学科培养基础扎实的宽口径人才,体现在重视数学、逻辑、数据结构、算法、电子设计、计算机体系结构和系统软件等方面的理论基础和专业技术基础,前两年半注重自然科学基础课程和专业基础课程,拓宽面向。后一年半主要是专业课程的设置,增加可选性、多样性、灵活性和方向性,突出学科方向特色,体现最新技术发展动向。
Ⅷ 大学计算机专业都学那些课程
1 计算机来科学与技术专业:源C语言程序设计、计算机组成原理、数据结构、 *** 作系统、
微机原理及汇编语言、计算机网络、计算机系统结构、软件工程、面向对象程序设计等。
2 计算机软件专业:面向对象程序设计、计算机组成原理、 *** 作系统、数据结构、计算
机网络、软件工程、编译原理、分布式系统、软件项目管理、Oracle数据库系统等。
3 电子商务专业:管理学原理、电子商务、物流管理、计算机网络、供应链管理、电子商务平台及核心技术、国际商务管理、电子商务案例分析、商务网站建设等。
Ⅸ 大学计算机有哪些专业课程
主要还是看你学系统方向还是软件方向或是信息方向。下面简单归纳一下。
计算机科学与技术专业:语言程序设计、计算机组成原理、数据结构、 *** 作系统、
微机原理及汇编语言、计算机网络、计算机系统结构、软件工程、面向对象程序设计等。
计算机软件专业:面向对象程序设计、计算机组成原理、 *** 作系统、数据结构、计算
机网络、软件工程、编译原理、分布式系统、软件项目管理、Oracle数据库系统等。
电子商务专业:管理学原理、电子商务、物流管理、计算机网络、供应链管理、电子商务平台及核心技术、国际商务管理、电子商务案例分析、商务网站建设等。
本专业是计算机硬件与软件相结合、面向系统、侧重应用的宽口径专业。通过基础教学与专业训练,培养基础知识扎实、知识面宽、工程实践能力强,具有开拓创新意识,在计算机科学与技术领域从事科学研究、教育、开发和应用的高级人才。本专业开设的主要课程有:电子技术、离散数学、程序设计、数据结构、 *** 作系统、计算机组成原理、微机系统、计算机系统结构、编译原理、计算机网络、数据库系统、软件工程、人工智能、计算机图形学、数字图像处理、计算机通讯原理、多媒体信息处理技术、数字信号处理、计算机控制、网络计算、算法设计与分析、信息安全、应用密码学基础、信息对抗、移动计算、数论与有限域基础、人机界面设计、面向对象程序设计等。
Ⅹ 大学计算机专业要学哪些课程
计算机组成原理
c语言程序设计
面向对象程序设计
汇编语言
可视化程序设计visual c++
java程序设计
网站建设与组网工程
网页设计
广告设计
数据库原理
——裴双林回答。
以上就是关于电脑培训分享程序员需要了解的10个面向对象设计全部的内容,包括:电脑培训分享程序员需要了解的10个面向对象设计、C++程序设计教程(钱能)跟C++面向对象程序设计(谭浩强),这两本哪个难、大学计算机主修课程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)