【正文】
簡史 1 程序設(shè)計范型 面向?qū)ο蟮幕靖拍? 3 ? 封裝 ? 對象和類 ? 接口、實現(xiàn)和 消息傳遞 ? 信息 /實現(xiàn)隱藏 ? 繼承 ? 多態(tài)性 6 小結(jié) 對象和類( 2) ? 類中有屬性和操作 ? 屬性描述對象的數(shù)據(jù)特征。如Circle類的操作 area() Student類的操作 take() ? 類描述了一組具有相同屬性和相同操作的對象。 ? 一旦定義了一個類,程序員就可以從一個類創(chuàng)建這個類的任意數(shù)目的對象,然后操作這些對象。 Circle area() perimeter() move() scale() 類名 接口 Circle cobj。 類的兩個不同對象 2 程序設(shè)計與抽象過程 4 面向?qū)ο蟪绦虻奶攸c 5 面向?qū)ο蟀l(fā)法發(fā)展 簡史 1 程序設(shè)計范型 面向?qū)ο蟮幕靖拍? 3 ? 封裝 ? 對象和類 ? 接口、實現(xiàn)和 消息傳遞 ? 信息 /實現(xiàn)隱藏 ? 繼承 ? 多態(tài)性 6 小結(jié) 對象和類( 4) ? 類和對象的 UML圖示 + 操 作 1 ( )+ 操 作 2 ( ) 屬 性 1 屬 性 2類 名+ 操 作 1 ( )+ 操 作 2 ( )類 名類 名+ a r e a ( ) : d o u b l e+ p e r i m e t e r ( ) : d o u b l e+ m o v e ( i n n e w x : i n t , i n n e w y : i n t ) : v o i d+ s c a l e ( i n f a c t o r : d o u b l e ) : v o i d r a d i u s : d o u b l e c e n t e r _ x : i n t c e n t e r _ y : i n tC i r c l e屬 性 1 = 值 1屬 性 2 = 值 2對 象 名 : 類 名r a d i u s : d o u b l e = 2 . 7c e n t e r _ x : i n t = 1 0c e n t e r _ y : i n t = 2 0c o b j : C i r c l e+ a r e a ( ) : d o u b l e+ p e r i m e t e r ( ) : d o u b l e+ m o v e ( i n n e w x : i n t , i n n e w y : i n t ) : v o i d+ s c a l e ( i n f a c t o r : d o u b l e ) : v o i dC i r c l e2 程序設(shè)計與抽象過程 4 面向?qū)ο蟪绦虻奶攸c 5 面向?qū)ο蟀l(fā)法發(fā)展 簡史 1 程序設(shè)計范型 面向?qū)ο蟮幕靖拍? 3 ? 封裝 ? 對象和類 ? 接口、實現(xiàn)和 消息傳遞 ? 信息 /實現(xiàn)隱藏 ? 繼承 ? 多態(tài)性 6 小結(jié) 接口、實現(xiàn)和消息傳遞( 1) ? 接口:由對外公開的操作和屬性構(gòu)成。 ? 實現(xiàn):實現(xiàn)操作的代碼和隱藏的數(shù)據(jù)一起構(gòu)成了類的實現(xiàn)。消息除了請求對象執(zhí)行特定的動作之外,也可以詢問對象本身的狀態(tài)。 ()。 double a。 (2,3)。 class Circle{ double radius。 public: Circle(double r = , int x=0, int y=0) { radius = r。 center_y = y。} double perimeter() { return PI*radius*2。 center_y = newy。 } }。 ? 例如上面的圓形類 Circle,從外部不能看到圓心和半徑是采用什么樣的數(shù)據(jù)結(jié)構(gòu)保存的,也不能看到如何實現(xiàn) move()和 scale()這些操作。 2 程序設(shè)計與抽象過程 4 面向?qū)ο蟪绦虻奶攸c 5 面向?qū)ο蟀l(fā)法發(fā)展 簡史 1 程序設(shè)計范型 面向?qū)ο蟮幕靖拍? 3 ? 封裝 ? 對象和類 ? 接口、實現(xiàn)和 消息傳遞 ? 信息 /實現(xiàn)隱藏 ? 繼承 ? 多態(tài)性 6 小結(jié) 信息 /實現(xiàn)隱藏( 2) ? 信息 /實現(xiàn)隱藏的益處 ? 對象的使用者 —— 不需要了解過多的細(xì)節(jié)就可以使用對象,并且使用的方式不依賴于對象的內(nèi)部實現(xiàn)。 ? 例如 Circle類如果改用一個點 Point類型的數(shù)據(jù)而不是兩個 int成員作為圓心坐標(biāo),只要保持 Circle的接口不變,那么使用 Circle對象 c的代碼仍可以正常工作。 ? 如果 B繼承了 A,則 B類的對象可以使用原來只有 A類對象能夠使用的操作和屬性。 基類、超類、父類 派生類或子類 2 程序設(shè)計與抽象過程 4 面向?qū)ο蟪绦虻奶攸c 5 面向?qū)ο蟀l(fā)法發(fā)展 簡史 1 程序設(shè)計范型 面向?qū)ο蟮幕靖拍? 3 ? 封裝 ? 對象和類 ? 接口、實現(xiàn)和 消息傳遞 ? 信息 /實現(xiàn)隱藏 ? 繼承 ? 多態(tài)性 6 小結(jié) 繼承( 2) ? 派生類可以增加自己特有的功能,增加的這些操作不屬于基類。 基類 子類 1 +操作 1( ) +操作 2( ) 子類 2 +操作 3( ) +操作 1( ) 子類 2 改寫了基類的操作 1 子類 1新增加了操作 3 2 程序設(shè)計與抽象過程 4 面向?qū)ο蟪绦虻奶攸c 5 面向?qū)ο蟀l(fā)法發(fā)展 簡史 1 程序設(shè)計范型 面向?qū)ο蟮幕靖拍? 3 ? 封裝 ? 對象和類 ? 接口、實現(xiàn)和 消息傳遞 ? 信息 /實現(xiàn)隱藏 ? 繼承 ? 多態(tài)性 6 小結(jié) 繼承( 3) ? isa ? 如果派生類只是覆蓋了基類中的操作,而沒有增加新