1. 面向对象程序设计的特点和优点
面向对象的基本概念
(1)对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
(3)类。
具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(5)消息和方法。
对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体
面向对象的特征
(1)对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2)分类性。
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
(3)继承性。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。
在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。
采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。
(4)多态性(多形性)
多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
多态性允许每个对象以适合自身的方式去响应共同的消息。
多态性增强了软件的灵活性和重用性。
三、面向对象的要素
(1)抽象。
抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节。
类实现了对象的数据(即状态)和行为的抽象。
(2)封装性(信息隐藏)。
封装性是保证软件部件具有优良的模块性的基础。
面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。
对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。
(3)共享性
面向对象技术在不同级别上促进了共享
同一类中的共享。同一类中的对象有着相同数据结构。这些对象之间是结构、行为特征的共享关系。
在同一应用中共享。在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。使用继承来实现代码的共享,这也是面向对象的主要优点之一。
在不同应用中共享。面向对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。
4.强调对象结构而不是程序结构
2. 什么是OOP
OOP即面向对象程序设计,全称为Object Oriented Programming,是一种计算机编程架构。其本质是以建立模型体现出来的抽象思维过程和面向对象的方法,模型是用来反映现实世界中事物特征的。
面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。
(2)面向对象程序设计的基本概念扩展阅读:
面向对象程序设计的优点:
1、数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰;
2、通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度;
3、结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程;
4、通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度;
5、以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统。
3. 闈㈠悜瀵硅薄鐨勬傚康锛岀壒鐐规槸浠涔
1.缂栫▼妯″瀷
鎵鏈夎$畻鏈哄潎鐢变袱绉嶅厓绱犵粍鎴:浠g爜鍜屾暟鎹.绮剧‘鐨勮,鏈変簺绋嬪簭鏄鍥寸粫鐫"浠涔堟e湪鍙戠敓"鑰岀紪鍐,鏈変簺鍒欐槸鍥寸粫"璋佹e湪鍙楀奖鍝"鑰岀紪鍐欑殑.
绗涓绉嶇紪绋嬫柟寮忓彨鍋"闈㈠悜杩囩▼鐨勬ā鍨",鎸夎繖绉嶆ā鍨嬬紪鍐欑殑绋嬪簭浠ヤ竴绯诲垪鐨勭嚎鎬фラ(浠g爜)涓虹壒寰,鍙琚鐞嗚В涓轰綔鐢ㄤ簬鏁版嵁鐨勪唬鐮.濡 C 绛夎繃绋嬪寲璇瑷.
绗浜岀嶇紪绋嬫柟寮忓彨鍋"闈㈠悜瀵硅薄鐨勬ā鍨",鎸夎繖绉嶆ā鍨嬬紪鍐欑殑绋嬪簭鍥寸粫鐫绋嬪簭鐨勬暟鎹(瀵硅薄)鍜岄拡瀵硅ュ硅薄鑰屼弗鏍煎畾涔夌殑鎺ュ彛鏉ョ粍缁囩▼搴,瀹冪殑鐗圭偣鏄鏁版嵁鎺у埗浠g爜鐨勮块棶.閫氳繃鎶婃帶鍒舵潈杞绉诲埌鏁版嵁涓,闈㈠悜瀵硅薄鐨勬ā鍨嬪湪缁勭粐鏂瑰紡涓婃湁:鎶借薄,灏佽,缁ф壙鍜屽氭佺殑濂藉.
2.鎶借薄
闈㈠悜瀵硅薄绋嬪簭璁捐$殑鍩烘湰瑕佺礌鏄鎶借薄,绋嬪簭鍛橀氳繃鎶借薄鏉ョ$悊澶嶆潅鎬.
绠$悊鎶借薄鐨勬湁鏁堟柟娉曟槸浣跨敤灞傛″紡鐨勫垎绫荤壒鎬,杩欑嶆柟娉曞厑璁哥敤鎴锋牴鎹鐗╃悊鍚涔夊垎瑙d竴涓澶嶆潅鐨勭郴缁,鎶婂畠鍒掑垎鎴愭洿瀹规槗绠$悊鐨勫潡.渚嬪,涓涓璁$畻鏈虹郴缁熸槸涓涓鐙绔嬬殑瀵硅薄.鑰屽湪璁$畻鏈虹郴缁熷唴閮ㄧ敱鍑犱釜瀛愮郴缁熺粍鎴:鏄剧ず鍣,閿鐩,纭鐩橀┍鍔ㄥ櫒,DVD-ROM,杞鐩,闊冲搷绛,杩欎簺瀛愮郴缁熸瘡涓鍙堢敱涓撻棬鐨勯儴浠剁粍鎴.鍏抽敭鏄闇瑕佷娇鐢ㄥ眰娆℃娊璞℃潵绠$悊璁$畻鏈虹郴缁(鎴栧叾浠栦换浣曞嶆潅绯荤粺)鐨勫嶆潅鎬.
闈㈠悜瀵硅薄绋嬪簭璁捐$殑鏈璐:杩欎簺鎶借薄鐨勫硅薄鍙浠ヨ鐪嬩綔鍏蜂綋鐨勫疄浣,杩欎簺瀹炰綋瀵圭敤鏉ュ憡璇夋垜浠浣滀粈涔堢殑娑堟伅杩涜屽搷搴.
/* (鎴戠殑鐞嗚В)
*璁$畻鏈烘槸涓涓瀹炰綋,鎴戣佽緭鍏ュ瓧绗,鏄剧ず鍣ㄦ樉绀哄嚭鏉,閭d箞
*璁$畻鏈(瀵硅薄).杈撳叆(閿鐩樺睘鎬).鏄剧ず(鏄剧ず鏂规硶)
*浣跨敤鍒嗗眰鏉ュ紩鐢,鎿嶄綔.鑰屼笉鐢ㄧ¤$畻鏈哄唴閮ㄥ備綍澶勭悊.
*鍙瑕佹湁璁$畻鏈哄硅薄,瀹冨氨鑳藉搷搴旀垜鐨勬搷浣,鑰屾垜鏁查敭鐩,
*璁$畻鏈哄硅薄灏辨妸杩欎釜娑堟伅浼犵粰灞忓箷,灞忓箷鏄剧ず.
*/
璁$畻鏈哄硅薄鍖呭惈浜嗗畠鎵鏈夌殑灞炴,浠ュ強鎿嶄綔,杩欏氨鏄闈㈠悜瀵硅薄绋嬪簭璁捐$殑涓夊ぇ鍘熷垯涔嬩竴:灏佽.
3.灏佽
灏佽呮槸涓绉嶆妸浠g爜鍜屼唬鐮佹墍鎿嶄綔鐨勬暟鎹鎹嗙粦鍦ㄤ竴璧,浣胯繖涓よ呬笉鍙楀栫晫骞叉壈鍜岃鐢ㄧ殑鏈哄埗.灏佽呭彲琚鐞嗚В涓轰竴绉嶇敤鍋氫繚鎶ょ殑鍖呰呭櫒,浠ラ槻姝浠g爜鍜屾暟鎹琚鍖呰呭櫒澶栭儴鎵瀹氫箟鐨勫叾浠栦唬鐮佷换鎰忚块棶.瀵瑰寘瑁呭櫒鍐呴儴浠g爜涓庢暟鎹鐨勮块棶閫氳繃涓涓鏄庣‘瀹氫箟鐨勬帴鍙f潵鎺у埗.灏佽呬唬鐮佺殑濂藉勬槸姣忎釜浜洪兘鐭ラ亾鎬庢牱璁块棶浠g爜,杩涜屾棤闇鑰冭檻瀹炵幇缁嗚妭灏辫兘鐩存帴浣跨敤瀹,鍚屾椂涓嶇敤鎷呭績涓嶅彲棰勬枡鐨勫壇浣滅敤.
鍦↗AVA涓,鏈鍩烘湰鐨勫皝瑁呭崟鍏冩槸绫,涓涓绫诲畾涔夌潃灏嗙敱涓缁勫硅薄鎵鍏变韩鐨勮屼负(鏁版嵁鍜屼唬鐮).涓涓绫荤殑姣忎釜瀵硅薄鍧囧寘鍚瀹冩墍瀹氫箟鐨勭粨鏋勪笌琛屼负,杩欎簺瀵硅薄灏卞ソ璞℃槸涓涓妯″瓙閾搁犲嚭鏉ョ殑.鎵浠ュ硅薄涔熷彨鍋氱被鐨勫疄渚.
鍦ㄥ畾涔変竴涓绫绘椂,闇瑕佹寚瀹氭瀯鎴愯ョ被鐨勪唬鐮佷笌鏁版嵁.鐗瑰埆鏄,绫绘墍瀹氫箟鐨勫硅薄鍙鍋氭垚鍛樺彉閲忔垨瀹炰緥鍙橀噺.鎿嶄綔鏁版嵁鐨勪唬鐮佸彨鍋氭垚鍛樻柟娉.鏂规硶瀹氫箟鎬庢牱浣跨敤鎴愬憳鍙橀噺,杩欐剰鍛崇潃绫荤殑琛屼负鍜屾帴鍙h佺敱鎿嶄綔瀹炰緥鏁版嵁鐨勬柟娉曟潵瀹氫箟.
鐢变簬绫荤殑鐢ㄩ旀槸灏佽呭嶆潅鎬,鎵浠ョ被鐨勫唴閮ㄦ湁闅愯棌瀹炵幇澶嶆潅鎬х殑鏈哄埗.鎵浠JAVA涓鎻愪緵浜嗙佹湁鍜屽叕鏈夌殑璁块棶妯″紡,绫荤殑鍏鏈夋帴鍙d唬琛ㄥ栭儴鐨勭敤鎴峰簲璇ョ煡閬撴垨鍙浠ョ煡閬撶殑姣忎欢涓滆タ.绉佹湁鐨勬柟娉曟暟鎹鍙鑳介氳繃璇ョ被鐨勬垚鍛樹唬鐮佹潵璁块棶.杩欏氨鍙浠ョ‘淇濅笉浼氬彂鐢熶笉甯屾湜鐨勪簨鎯.
4.缁ф壙
缁ф壙鏄鎸囦竴涓瀵硅薄浠庡彟涓涓瀵硅薄涓鑾峰緱灞炴х殑杩囩▼.鏄闈㈠悜瀵硅薄绋嬪簭璁捐$殑涓夊ぇ鍘熷垯涔嬩簩,瀹冩敮鎸佹寜灞傛″垎绫荤殑姒傚康.渚嬪,娉㈡柉鐚鏄鐚鐨勪竴绉,鐚鍙堟槸鍝轰钩鍔ㄧ墿鐨勪竴绉,鍝轰钩鍔ㄧ墿鍙堟槸鍔ㄧ墿鐨勪竴绉.濡傛灉涓嶄娇鐢ㄥ眰娆$殑姒傚康,姣忎釜瀵硅薄闇瑕佹槑纭瀹氫箟鍚勮嚜鐨勫叏閮ㄧ壒寰.閫氳繃灞傛″垎绫绘柟寮,涓涓瀵硅薄鍙闇瑕佸湪瀹冪殑绫讳腑瀹氫箟鏄瀹冩垚涓哄敮涓鐨 鍚勪釜灞炴,鐒跺悗浠庣埗绫讳腑缁ф壙瀹冪殑閫氱敤灞炴.鍥犳,姝f槸鐢变簬缁ф壙鏈哄埗,鎵嶄娇寰椾竴涓瀵硅薄鍙浠ユ垚涓轰竴涓閫氱敤绫荤殑涓涓鐗瑰畾瀹炰緥.涓涓娣卞害缁ф壙鐨勫瓙绫诲皢缁ф壙瀹冨湪绫诲眰娆′腑鐨勬瘡涓绁栧厛鐨勬墍鏈夊睘鎬.
缁ф壙涓庡皝瑁呭彲浠ヤ簰鐩镐綔鐢.濡傛灉涓涓缁欏畾鐨勭被灏佽呬簡鏌愪簺灞炴,瀹冪殑浠讳綍瀛愮被灏嗕細鍚鏈夊悓鏍峰緱灞炴,鍙﹀姞鍚勪釜瀛愮被鎵鏈夊緱灞炴.杩欐槸闈㈠悜瀵硅薄绋嬪簭鍦ㄥ嶆潅鎬т笂鍛堢嚎鎬ц岄潪鍑犱綍澧為暱鐨勪竴涓閲嶈佹傚康.鏂扮殑瀛愮被缁ф壙鍏舵墍鏈夌栧厛鐨勬墍鏈夊睘鎬.瀛愮被鍜岀郴缁熶腑鐨勫叾浠栦唬鐮佷笉浼氫骇鐢熸棤娉曢勬枡鐨勪氦浜掍綔鐢.
5.澶氭
澶氭佹槸鎸囦竴涓鏂规硶鍙鑳芥湁涓涓鍚嶇О,浣嗗彲浠ユ湁璁稿氬舰鎬,涔熷氨鏄绋嬪簭涓鍙浠ュ畾涔夊氫釜鍚屽悕鐨勬柟娉,鐢"涓涓鎺ュ彛,澶氫釜鏂规硶"鏉ユ弿杩.鍙浠ラ氳繃鏂规硶鐨勫弬鏁板拰绫诲瀷寮曠敤.
6.灏佽,缁ф壙,澶氭佺殑缁勫悎浣跨敤
鍦ㄧ敱灏佽咃紝缁ф壙,澶氭佹墍缁勬垚鐨勭幆澧冧腑,绋嬪簭鍛樺彲浠ョ紪鍐欏嚭姣旈潰鍚戣繃绋嬫ā鍨嬫洿鍋ュ.,鏇村叿鎵╁睍鎬х殑绋嬪簭.缁忚繃浠旂粏璁捐$殑绫诲眰娆$粨鏋勬槸閲嶇敤浠g爜鐨勫熀纭.灏佽呰兘璁╃▼搴忓憳涓嶅繀淇鏀瑰叕鏈夋帴鍙g殑浠g爜鍗冲彲瀹炵幇绋嬪簭鐨勭Щ妞.澶氭佽兘浣跨▼搴忓憳寮鍙戝嚭绠娲,鏄撴噦,鏄撲慨鏀圭殑浠g爜.渚嬪:姹借溅
浠庣户鎵跨殑瑙掑害鐪,椹鹃┒鍛橀兘渚濋潬缁ф壙鎬ф潵椹鹃┒涓嶅悓绫诲瀷(瀛愮被)鐨勬苯杞,鏃犺鸿繖杈嗚溅鏄杞胯溅杩樻槸鍗¤溅,鏄濂旈┌鐗岃繕鏄鑿蹭簹鐗圭墝,椹鹃┒鍛橀兘鑳芥壘鍒版柟鍚戠洏,鎵嬪埞,鎹㈡。鍣.缁忚繃涓娈垫椂闂撮┚椹跺悗,閮借兘鐭ラ亾鎵嬪姩妗d笌鑷鍔ㄦ。涔嬮棿鐨勫樊鍒,鍥犱负浠栦滑瀹為檯涓婇兘鐭ラ亾杩欎袱鑰呯殑鍏卞悓瓒呯被:浼犲姩瑁呯疆.
浠庡皝瑁呯殑瑙掑害鐪,椹鹃┒鍛樻绘槸鐪嬪埌灏佽呭ソ鐨勭壒鎬.鍒硅溅闅愯棌浜嗚稿氬嶆潅鎬,鍏跺栬傚傛ょ畝鍗,鐢ㄨ剼灏辫兘鎿嶄綔瀹.鍙戝姩鏈,鎵嬪埞,杞鑳庡ぇ灏忕殑瀹炵幇瀵逛笌鍒硅溅绫荤殑瀹氫箟娌℃湁褰卞搷.
浠庡氭佺殑瑙掑害鐪,鍒硅溅绯荤粺鏈夋i攣鍙嶉攣涔嬪垎,椹鹃┒鍛樺彧鐢ㄨ剼韪╁埞杞﹀仠杞,鍚屾牱鐨勬帴鍙e彲浠ョ敤鏉ユ帶鍒惰嫢骞茬嶄笉鍚岀殑瀹炵幇(姝i攣鎴栧弽閿).
杩欐牱鍚勪釜鐙绔嬬殑鏋勪欢鎵嶈杞鎹涓烘苯杞﹁繖涓瀵硅薄鐨.鍚屾牱,閫氳繃浣跨敤闈㈠悜瀵硅薄鐨勮捐″師鍒,绋嬪簭鍛樺彲浠ユ妸涓涓澶嶆潅绋嬪簭鐨勫悇涓鏋勪欢缁勫悎鍦ㄤ竴璧,褰㈡垚涓涓涓鑷,鍋ュ.,鍙缁存姢鐨勭▼搴