1. Trang chủ
  2. » Công Nghệ Thông Tin

Chương 8-Công nghệ phần mềm hướng đối tượng

32 383 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 8 Công Nghệ Phần Mềm Hướng Đối Tượng
Trường học Trường Đại Học
Chuyên ngành Công Nghệ Phần Mềm
Thể loại tiểu luận
Năm xuất bản 2009
Thành phố Hà Nội
Định dạng
Số trang 32
Dung lượng 9,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tác vụlTác vụ có thể bị che dấu hoặc truy xuất được từ bên ngoài uMột số ngôn ngữ lập trìnhvà UML: public, protected, private lTác vụ có thể được override trong các lớp con thừa kế uTrừu

Trang 1

Chương 8 Công nghệ phần mềm hướng đối tượng

Mô hình hướng đối tượng

Giới thiệu

lMô hình hướng đối tượng giới thiệu một quan điểm lậptrình(và phân tích/thiết kế) khác hẳn so với trường phái

cổ điển (có cấu trúc)

lBắt đầu nhen nhóm vào những năm cuối60 và đến đầu

90 trở nên rất phổ biến trong công nghiệp phần mềm

lNhững ngôn ngữ hướng đối tượng đầu tiên: Smalltalk, Eiffel Sau đó xuất hiện: Object Pascal, C++, Java…

Đối tượng và lớp

lHình thành các phương pháp phân tích/thiết kế hướng

đối tượng

lMô hình hướng đối tượng quan niệm thế giới bao gồm

các đối tượng(object) sinh sống và tương tác với nhau

lĐối tượng bao gồm

udữ liệu: mang một giá trị nhất định

utác vụ: thực hiện một công việc nào đó

Đối tượng và lớp

mà đặc tả đầy đủ cấu trúc và hành vi của các đối tượng

từ lớp

dùng định nghĩa

Trang 2

Đóng bao

lĐóng bao: việc gộp thuộc tính và tác vụ trong một đối

tượng đồng thời giới hạn cách truy xuất các thuộc tính

đó(thường phải thông qua các tác vụ get/set)

x = 3.2

y = 1.7

Thuộc tính

lThuộc tiùnh(attribute) là một vùng có thể chứa dữ

liệu(đơn hoặc tổ hợp) của lớp

lDữ liệu mà thuộc tính thể hiện nằm trong một khoảnggiá trị nào đó được xác định bởi kiểu

lGiá trị của tất cả thuộc tính xác định trạng thái của đốitượng

uVí dụ: một đối tượng của Circle có (Radius, x, y) = (1.2, 3.4, 5.3)

mang giá trị khác nhau)

Tác vụ

lTác vụ(operation) là một dịch vụ có thể yêu cầu từ phía

đối tượng để thực hiện hành vi

lDấu hiệu nhận dạng của tác vụ(signature) xác định các

thông số có thể truyền cũng như kết quả trả về

lPhương thức(method) là phần hiện thực của tác vụ

Trang 3

Tác vụ

lTác vụ có thể bị che dấu hoặc truy xuất được từ bên ngoài

uMột số ngôn ngữ lập trình(và UML): public, protected,

private

lTác vụ có thể được override trong các lớp con thừa kế

uTrừu tượng(abstract): không có hiện thực

lMột số ngôn ngữ lập trình cho phép định nghĩa

uTác vụ khởi tạo(constructor): được gọi khi đối tượng

mới tạo ra

uTác vụ hủy(destructor): được gọi khi đối tượng sắp bị

huỷ bỏ

Ví dụ lớp, đối tượng java

class abstract HTMLObject { protected static final int LEFT = 0;

protected static final int MIDDLE = 1;

protected static final int RIGHT = 2;

private int alignment = LEFT;

protected Vector objects = null;

uDấu hiệu nhận dạng của tác vụ muốn gọi

uDanh sách thông số gọi

Thông điệp

lĐối với các ngôn ngữ lập trình

uĐối tượng đích: biến đối tượng hoặc bản thân đối

tượng muốn gửi thông điệp (self, this)

uDấu hiệu nhận dạng của tác vụ muốn gọi: tên tác vụtrùng nhau⇒xem các thông số gọi

uDanh sách thông số gọi: như phép gọi hàm bìnhthường, chú ý kiểu khi truyền và gán kết quả trả về

uVí dụ: aCircle.SetRadius( 3 ); aCircle.Draw( pWnd);

Trang 4

Bao gộp

lBao gộp(aggregation) là quan hệ giữa hai đối tượng

lMột đối tượng bao lấy đối tượng kia

lQuan hệ này thường xảy ra trong thế giới thực, ví dụ

uXe hơi bao gồm: bánh xe, động cơ, khung xe

uTrang HTML bao gồm: text, hình ảnh, tiêu đề, các

uLỏng lẻo: chu kỳ sống của hai đối tượng độc lập nhau

lQuan hệ bao gộp cũng được áp dụng cho lớp

lMột số ngôn ngữ lập trình hỗ trợ cả2 dạng liên kết: biến

int xPos, yPos;

double xScale, yScale;

lThừa kế(inheritance) là quan hệ giữa hai lớp

lLớp con thừa hưởng tất cả thuộc tính và tác vụ của lớpcha

lLớp con(subclass) là cụ thể hoá của lớp cha (superclass); lớp cha là tổng quát hoá của lớp con

lQuan hệ này cũng thường được ghi nhận trong thế giớithực, ví dụ

uHổ, báo, sói đều là thú

uButton, Checkbox và Dialog đều là Window

uHình tròn, hình chữ nhật, hình ellipse đều là hình vẽ

Trang 5

Thừa kế và nạp chồng

lHai loại thừa kế: đơn thừa kế và đa thừa kế

lĐơn thừa kế: mỗi lớp con có nhiều nhất là một lớp cha

lĐa thừa kế:

uMỗi lớp con có một hoặc nhiều lớp cha

uNảy sinh hai vấn đề: đụng độ giữa tên các thành phần

(member) của lớp cha và thừa kế lại

Thừa kế và nạp chồng

lLớp con có thể override lại một số tác vụ của lớp cha.

lPhải giữa nguyên dấu vết nhận dạng(signature) của tác

vụ bị override; chỉ được thay đổi phương thức (phần hiện

thực) của nó

lĐa số ngôn ngữ lập trình hướng đối tượng hỗ trợ thừa kế

lMột số ngôn ngữ đưa ra khái niệm phương thức ảo

(virtual)

Ví dụ thừa kế và nạp chồng java

class HTMLDocument extends HTMLObject {

private String title = null;

public String toHTML( ) { // override

StringBuffer html = new StringBuffer;

Trang 6

Tính đa hình

Ví dụ: đối tượng http

được xem như thuộc

kiểu của HttpView,

View và Window

Window

# hWnd: HWND + MoveWindow( ) + GetClass( ): String

View + GetClass( ): String + GetDocument( ): Document

HttpView + GetClass( ): String

lChu kỳ sống của đối tượng có thể vượt ra khỏi sự thực

thi của chương trình⇒tính vĩnh cửu(persistence)

uĐối tượng được cất vào bộ nhớ vĩnh cửu khi

chương trình kết thúc

uKhi cần thiết có thể khôi phục lại đối tượng vào bộ

nhớ chính

uChỉ lưu trữ trạng thái của đối tượng

uNgôn ngữ C++ và Java: streaming

CNPM Hướng đối tượng - Giới thiệu

lKhách hàng và nhà phát triển gặp nhau cùng thảo luận

về yêu cầu của hệ thống phần mềm cần xây dựng

lMô hình nghiệp vụ được thiết lập để hỗ trợ cả nhàphát triển lẫn khách hàng trong việc kiểm chứng lại vàthống nhất yêu cầu phần mềm và vai trò các tác nhânbên ngoài

Trang 7

Khái niệm về actor

lActor xác định một bộ vai trị mà người hoặc vật sẽ

đĩng vai khi tương tác với hệ thống phần mềm

lActor nằm ngồi phạm vi của hệ thống

uChỉ quan tâm các thơng điệp mà actor gửi hay nhận

uKhơng quan tâm cấu trúc bên trong của actor

lPhân loại actor

uChủ yếu / Thứ yếu

uTích cực / Thụ động

Nhận diện các actor

lTrả lời một số câu hỏi như

uAi là người sử dụng chức năng chính của hệ thống ?

uAi cần sự hỗ trợ từ hệ thống để thực hiện cơng việcthường nhật của họ ?

uAi phải thực hiện cơng việc bảo dưỡng, quản trị vàgiữ cho hệ thống hoạt động ?

uHệ thống sẽ kiểm sốt thiết bị phần cứng nào ?

uHệ thống đang xây dựng cần tương tác với những

hệ thống khác hay khơng ?

uAi hoặc vật thể nào quan tâm đến hay chịu ảnhhưởng bởi kết quả mà hệ thống phần mềm tạo ra ?

Actor trong UML

lActor được biểu diễn bằng ký hiệu hình người

lActor được xem là một lớp (class) cĩ stereotype là

<<actor>>

lGiữa các actor cĩ thể cĩ quan hệ tổng quá hố

uVí dụ: Sinh viên, giảng viên và khách đều là độc

giả của hệ thống quản lý thư viện

lVí dụ: một hệ thống đăng ký mơn học trong trường

đại học

Actor trong UML

Sinh viên

Hệ thống đăng ký môn học

Phòng Đào Tạo

Trang 8

Actor trong UML

Người đăng ký mailbox Hệ thống

gửi nhận mail

Quản trị viên

Khái niệm về Use-case

lBiểu diễn một chức năng của hệ thống phần mềm

lUse-case được biểu diễn bằng một chuỗi các thơng điệp

trao đổi bên trong hệ thống và một hoặc một số thơng

điệp trao đổi với actor

Khái niệm về Use-case

lĐiểm mở rộng là một vị trí trong use-case mà tại đĩ

cĩ thể chèn chuỗi sự kiện của một use-case khác

lUse-case cĩ thể chứa điều kiện rẽ nhánh, xử lý lỗi,

ngoại lệ

lMinh dụ của use-case là kịch bản (scenario): miêu tả

cụ thể trình tự các sự kiện

Tìm kiếm Use-case

lTrả lời một số câu hỏi như

uActor yêu cầu chức năng gì của hệ thống ?

uActor cần phải đọc, tạo, xố, sửa đổi hoặc lưu trữ

thơng tin nào đĩ của hệ thống khơng ?

uActor cần thiết phải được cảnh báo về những sự

kiện trong hệ thống, hay actor cần phải báo hiệu

cho hệ thống về vấn đề nào đĩ khơng ?

uHệ thống cĩ thể hỗ trợ một số cơng việc thường

nhật của actor nào đĩ hay khơng ?

Trang 9

Một số câu hỏi cần lưu ý

lMột số câu hỏi khác cần chú ý

uHệ thống cần dữ liệu input/ouput nào ? Dữ liệu đĩ

đến từ đâu ?

uNhững khĩ khăn nào liên quan đến hiện thực của

hệ thống hiện tại (chẳng hạn hệ thống quản lý bằng

giấy tờ nên được thay thế bằng hệ thống quản lý trên

máy tính) ?

Use-case trong UML

lUse-case được biểu diễn bằng hình ellipse

lGiữa use-case và actor thường cĩ quan hệ liên kết

lGiữa các use-case cũng cĩ quan hệ liên kết hoặc tổng

Đăng ký học

Đăng ký dạy

Quản lý SV Quản lý MH

Thêm SV mới

<<extend>>

Thiết lập các mối quan hệ

lQuan hệ giữa actor với actor

lQuan hệ giữa actor với use-case

lQuan hệ giữa use-case với use-case

lUML đưa ra quan hệ liên kết (association)

Trang 10

Quan hệ liên kết

lQuan hệ liên kết chỉ ra một quan hệ có ý nghĩa giữa

hai bên

uTrong thực tế: hành khách với lái xe, sinh viên với

giáo viên, giảng viên với môn học …

lMột số tính chất liên quan

uTên của liên kết

uMột chiều hay 2 chiều

uBậc: số lượng thực thể tham gia vào liên kết tại mỗi

bên

Quan hệ liên kết trong UML

lUML biểu diễn liên kết như là một đoạn thẳng (haichiều) hoặc mũi tên (một chiều)

Liên kết trong mô hình nghiệp vụ

lLiên kết là quan hệ duy nhất giữa actor và use-case

lCó thể là một chiều hoặc hai chiều

uactor kích hoạt use-case và nhận kết quả về: liên

Quan hệ giao tiếp

lLà quan hệ liên kết có stereotype là

Trang 11

Quan hệ gộp

lLà quan hệ liên kết cĩ stereotype là <<include>>

lDùng để liên kết giữa 2 use-case

lTrong use-case nguồn cĩ một điểm mở rộng mà tại đĩ

bắt buộc phải chèn use-case đích vào

Quan hệ gộp

lTại điểm mở rộng, diễn tiến của use-case nguồn tạm thời ngừng lại để chuyển sang diễn tiến của use-case

đích

lKhi kết thúc use-case đích, diễn tiến của use-case

nguồn lại tiếp tục

Đăng nhập

<<include>>

Tìm kiếm

Quan hệ mở rộng

lLà quan hệ liên kết cĩ stereotype là <<extend>>

lDùng để liên kết giữa 2 use-case

lTrong use-case nguồn cĩ một điểm mở rộng mà tại đĩ

cĩ thể (hoặc khơng) phải chèn use-case đích vào

lChèn hay khơng phụ thuộc vào điều kiện rẽ nhánh

hoặc tương tác từ phía actor

Quan hệ mở rộng

lTại điểm mở rộng, nếu được mở rộng thì diễn tiến của

use-case nguồn tạm thời ngừng lại để chuyển sang

diễn tiến của use-case đích

lKhi kết thúc use-case đích, diễn tiến của use-case

nguồn lại tiếp tục

Đăng ký đặt chỗ

<<extend>>

Tìm kiếm

Trang 12

Xây dựng mô hình use-case

lCác yêu cầu của phần mềm được miêu tả trong mô

hình use-case

lMô hình use-case bao gồm các lược đồ use-case

(use-case diagram ) và (có thể) một số package

lMỗi lược đồ use-case bao gồm các actor, use-case và

các mối quan hệ

lCó thể sử dụng package để gom một số use-case liên

quan tạo thành một bộ chức năng con của hệ thống

Xây dựng mô hình use-case

lCác quan hệ có thể xảy ra trong lược đồ use-case

uQuan hệ liên kết giữa actor và use-case: một chiều hoặc hai chiều, thường có stereotype là

<<communicate>>

uQuan hệ mở rộng hay gộp giữa 2 use-case: quan hệ liên kết với stereotype <<extend>> hay <<include>>

uQuan hệ tổng quát hoá (generalization) giữa các

actor: nhiều actor có vai trò của một actor trừu tượng

uQuan hệ tổng quát hoá giữa các case: nhiều

use-case là trường hợp cụ thể của một use-use-case trừu tượng

Xây dựng mô hình use-case

People

Finance Prints timetable Makes timetable

Trang 13

Xây dựng mô hình use-case

Phân tích yêu cầu – giới thiệu

lMô hình nghiệp vụ biểu diễn các chức năng phần mềm

cần xây dựng dưới dạng các use-case

lMô hình phân tích sẽ tìm kiếm các đối tượng “sống”

trong ngữ cảnh của phần mềm

lCác đối tượng sẽ tương tác với nhau để tạo nên các

chức năng mô tả bởi use-case

Phân tích yêu cầu – giới thiệu

lMô hình phân tích tập trung mô tả vai trò và cấu trúc

của các đối tượng

lChưa quan tâm đến hành vi cụ thể và nhiệm vụ chi

tiết của chúng trong ngữ cảnh của hệ thống

lNguyên tắc: mô hình phân tích phải độc lập với o/s,

ngôn ngữ lập trình, công cụ phát triển

Nhận diện đối tượng/lớp

lDựa vào đặc tả của từng use-case để tìm kiếm các đối

Trang 14

Nhận diện đối tượng/lớp

lPhân loại đối tượng/lớp

uĐối tượng thực thể(entity): biểu diễn các thông tin

thiết yếu của hệ thống, có thể được lưu trong cơ sở

dữ liệu

uĐối tượng biên(boundary): thực hiện chức năng

giao tiếp với actor

uĐối tượng điều khiển(control): điều khiển các đối

tượng khác

Nhận diện đối tượng/lớp

lTrong UML, lớp được biểu diễn bằng một hình chữnhật gồm3 phần: tên, các thuộc tính và các tác vụ

lCó thể áp dụng stereotype cho lớp: <<entity>>,

<<boundary>>, <<control>>

lĐối tượng cũng được biểu diễn bằng hình chữ nhật, thông thường gồm2 phần: tên đối tượng + tên lớp(được gạch chân), giá trị các thuộc tính (trạng thái củađối tượng)

Nhận diện đối tượng/lớp

HTMLObject

# alignment: int + GetAlignment( ): int

- title: String alignment = MIDDLE

title = “A document”

lTrong UML, được gán stereotype <<entity>>

lDễ nhận diện các thuộc tính của chúng

Trang 15

Đối tượng/lớp thực thể

l Ví dụ:

u Đối với hệ thống đăng ký môn

học hệ tín chỉ qua WEB, nhận

diện các đối tượng thực thể như:

thông tin SV, thông tin GV,

nhóm lớp học, đăng ký nhóm,

sổ tay sinh viên …

u Đối với hệ thống mail, nhận

diện các đối tượng thực thể như:

hộp thư, thông điệp mail…

u Đối tượng đường đồng mức,

đứt gãy và bản đồ trong chương

trình vẽ bề mặt địa hình

+ GetSubject( ): String + toString( ): String

Đối tượng/lớp biên

lThực hiện chức năng giao tiếp với actor

lThường chứa các phần tử hoặc điều khiển giao diệnngười dùng(nút nhấn, hộp danh sách, tuỳ chọn, menu )

lTrong UML, được gán stereotype <<boundary>>

lKhó nhận biết các thuộc tính và tác vụ trong mô hìnhphân tích

Đối tượng/lớp biên

l Ví dụ:

u Đối với hệ thống đăng ký

môn học hệ tín chỉ qua

WEB, nhận diện các đối

tượng biên như:

RegisterForm,

StudentForm…

u Đối với hệ thống mail,

nhận diện các đối tượng

biên như: MailView,

MailCompose

MailView

<<boundary>>

Đối tượng/lớp điều khiển

lCó nhiệm vụ điều khiển các lớp khác hoặc

l(Đơn giản hơn) Những lớp không phải là lớp thực thể

và lớp biên

lTrong UML, được gán stereotype <<control>>

lLớp biên thường có quan hệ liên kết hoặc phụ thuộcvới các lớp khác

Trang 16

Đối tượng/lớp điều khiển

# Do( )

PasteCommand

<<control>>

+ Execute( ) + Reexecute( ) + Unexecute( )

# Do( )

BgCommand

<<control>>

+ Execute( ) + Reexecute( ) + Unexecute( )

# Do( )

Nhận diện các thuộc tính

lDựa vào đặc tả của từng use-case, tìm kiếm các danh

từ hoặc nhóm danh từ liên quan đến đối tượng đangxét

lTrả lời câu hỏi: những thành phần nào cấu thành đốitượng đang xét?

lLưu ý: cùng một đối tượng trong các ngữ cảnh khácnhau chúng ta có thể tìm được các thuộc tính khácnhau

Nhận diện các thuộc tính

lNên xác định(tuy nhiên không bắt buộc) trong mô

hình phân tiùch

uKiểu của thuộc tính: một số kiểu cơ bản

uBậc của thuộc tính: số ít hoặc số nhiều

uVisibility của thuộc tính: mức độ cho phép truy xuất

thuộc tiùnh từ bên ngoài

lUML: thuộc tính được miêu tả tường minh hoặc thông

qua quan hệ với các lớp khác

Nhận diện các thuộc tính

lMột số kiểu cơ bản của các ngôn ngữ lập trình:

integer, float, double, long, char

lMột số kiểu cơ bản khác: string, date, time

lUML cho phép định nghĩa tất cả các kiểu dữ liệu trên

Trang 17

+ GetCode( ): Long + GetName( ): String

+ GetCode( ): String

Nhận diện các thuộc tính

lHệ thống đăng kýmôn học hệ tínchỉ qua WEB-Nhận diện cácthuộc tính chocác đối tượng:

CourseOffering, Catalog

lBậc của thuộc tính: số ít hay số nhiều

lNếu thuộc tính được đặc tả tường minh: dùng dấu []

để chỉ số nhiều hoặc số lượng chính xác

lTrường hợp thuộc tính được miêu tả thông qua quan

hệ với các lớp khác: UML cho phép thể hiện bậc trênquan hệ(ví dụ: 1, 0, *, 2 9, 0 n)

Trang 18

Mức độ truy xuất thuộc tính

lUML định nghĩa3 mức độ truy xuất thuộc tính (visibility)

upublic(+): có thể truy xuất thuộc tính từ tất cả các vị trí

khác nhau

uprotected (#): bản thân lớp đang xét và các lớp con của

nó có thể truy xuất thuộc tính

uprivate(-): chỉ có lớp đang xét có thể truy xuất thuộc

tính

lThông thường nên đặt mức độ truy xuất thuộc tính là

private hoặc protected(cho các lớp cơ sở), không nên là

public Thuộc tính nên được truy xuất thông qua tác vụ

get/set

Nhận diện các tác vụ

lDựa vào đặc tả của từng use-case, tìm kiếm các động

từ hoặc nhóm động từ liên quan đến đối tượng đangxét

lChú ý xem đối tượng được tạo ra và bị huỷ bỏ đi nhưthế nào? Trong thời gian đó nó gửi/nhận thông điệp rasao?

lCác đối tượng biên có các tác vụ nhận lệnh từ actor.

Nhận diện các tác vụ

lXem xét mức độ truy xuất của tác vụ tương tự như đối

với các thuộc tính; các tác vụ thường có visibility là +

hoặc#

lMột số tác vụ không xuất hiện một cách tự nhiên

trong mô hình phân tích⇒mô hình thiết kế sẽ nghiên

cứu kỹ trách nhiệm và hành vi của từng đối tượng

lUML hỗ trợ quan hệ tổng quát hoá(generalization)

lLớp cơ sở trừu tượng(không thể cụ thể hoá tạo ra đốitượng) có tên in nghiêng

Ngày đăng: 19/10/2013, 23:15

HÌNH ẢNH LIÊN QUAN

Hình use-case - Chương 8-Công nghệ phần mềm hướng đối tượng
Hình use case (Trang 12)
Hình phân tiùch - Chương 8-Công nghệ phần mềm hướng đối tượng
Hình ph ân tiùch (Trang 16)
Hình thiết kế (thêm một số lớp, chi tiết các thuộc tính và tác - Chương 8-Công nghệ phần mềm hướng đối tượng
Hình thi ết kế (thêm một số lớp, chi tiết các thuộc tính và tác (Trang 21)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN