1. Trang chủ
  2. » Giáo Dục - Đào Tạo

PHÂN TÍCH và THIẾT kế THEO HƯỚNG đối TƯỢNG UNIFIED MODELING LANGUAGE bài tập một số mẫu THIẾT kế TRONG PHÁT TRIỂN PHẦN mềm HƯỚNG đối TƯỢNG

20 20 0

Đ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

Định dạng
Số trang 20
Dung lượng 865,35 KB

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

Nội dung

Việc chuyển từ lập trình hướng cấu trúc qua hướng đối tượng Lập trình hướng cấu trúc: Lập trình hướng cấu trúc hay còn gọi là lập trình hướng thủ tục Procedure Oriented Programming - POP

Trang 1

TRƯỜNG ĐẠI HỌC TÂY NGUYÊN

KHOA KHTN & CN

BÁO CÁO BÀI TẬP

MÔN: PHÂN TÍCH VÀ THIẾT KẾ THEO HƯỚNG ĐỐI TƯỢNG

UNIFIED MODELING LANGUAGE

BÀI TẬP: MỘT SỐ MẪU THIẾT KẾ TRONG PHÁT TRIỂN

PHẦN MỀM HƯỚNG ĐỐI TƯỢNG GVHD: ThS Vũ Anh Tuấn

Sinh viên: Kiều Ngọc Hoàng Hòa 18103041 Lớp: Công nghệ thông tin K18

Đắk Lắk – 09/2021

Trang 2

MỤC LỤC

MỤC LỤC 2

DANH MỤC CÁC TỪ VIẾT TẮT 3

CHƯƠNG I: GIỚI THIỆU 3

1.1 Việc chuyển từ lập trình hướng cấu trúc qua hướng đối tượng 3

1.2 Ngôn ngữ UML 4

CHƯƠNG II: MỘT SỐ SƠ ĐỒ TRONG UML 5

2.1 Giới thiệu bài toán 5

2.2 Sơ đồ Use Case 6

2.3 Mô tả một UC chi tiết 7

2.4 Sơ đồ trình tự 8

2.5 Sơ đồ cộng tác 8

2.6 Sơ đồ lớp 9

2.7 Phát sinh mã 10

CHƯƠNG III: DESIGN PATTERN 11

3.1 Giới thiệu 11

3.2 Các design pattern 12

3.2.1 Singleton 12

3.2.2 Factory method 13

3.2.3 Strategy 13

3.2.4 Observer 14

3.2.5 Builder 15

3.2.6 Adapter 15

3.2.7 State 16

CHƯƠNG IV: KẾT LUẬN 17

TÀI LIỆU THAM KHẢO 17

Trang 3

DANH MỤC CÁC TỪ VIẾT TẮT

CHƯƠNG I: GIỚI THIỆU

I.1 Việc chuyển từ lập trình hướng cấu trúc qua hướng đối tượng

Lập trình hướng cấu trúc:

Lập trình hướng cấu trúc hay còn gọi là lập trình hướng thủ tục

(Procedure Oriented Programming - POP): là một kỹ thuật lập trình truyền thống, trong đó chương trình được chia thành các hàm (chương trình con)

Mỗi chương trình còn có thể được chia ra nhiều chương trình con khác

để đơn giản hóa công việc của chúng.[1]

Lập trình hướng đối tượng:

Lập trình hướng đối tượng (Object Oriented Programming – OOP): là một kỹ thuật lập trình, trong đó chương trình sẽ được chia ra thành các phần nhỏ được gọi là đối tượng (Object) Đối tượng trong lập trình hướng đối tượng sẽ tương ứng với các thực thể trong bài toán, nó sẽ có các thuộc tính (attribute), các hành động (method) Các đối tượng có thể tương tác với nhau trao đổi dữ liệu qua lại với nhau.[1]

Việc chuyển từ lập trình hướng cấu trúc qua hướng đối tượng:

POP hướng tới việc thực thi, gắn chặt với kiến trúc của vi xử lý, chúng

là một kiểu chuyển đổi cho con người có thể hiểu được ngôn ngữ của máy tính Thế nhưng trong chúng vẫn luôn tồn tại tính Tuyến tính của việc thực thi POP cũng chỉ sử dụng trong các ngôn ngữ bậc thấp, có thể can thiệp trực tiếp tới bộ vi xử lý, vi điều khiển

Trang 4

OOP hướng tới việc phát triển ứng dụng, các hệ thống thông tin phục

vụ các nhu cầu của con người Chúng bỏ qua lớp giao tiếp với máy mà giúp con người phát triển ứng dụng một cách nhanh chóng nhất mà không cần quan tâm đến quá trình xử lý thông tin trong máy tính Vậy nên OOP thân thiện với con người hơn và dễ dàng học tập và phát triển phần mềm

Khi chuyển từ lập trình hướng cấu trúc sang hướng đối tượng cho phép xây dựng các hệ thống lớn với các quan hệ liên quan đến đối tượng, giúp việc

xử lý tập trung vào các tương tác giữa các đối tượng Việc phân tách các chức năng của hệ thống thông tin tập trung vào đối tượng sẽ gần hơn với thế giới thực so với các logic và thủ tục trên lập trình hướng cấu trúc Mặt khác, hướng đối tượng cho phép tái sử dụng lại chương trình, có thể kế thừa phát triển từ các lớp và các tính chất như kế thừa, đa hình, tính bảo mật cao nhờ vào các modifier: Private, Public, Protected, Default Lập trình theo hướng đối tượng cho phép điều khiển dữ liệu hạn chế quyền truy cập của các đối tượng khác, lập trình theo hướng cấu trúc sẽ kém bảo mật hơn khi các hàm có thể được gọi lại ở bất kì đâu cũng như khả năng tái sử dụng các đoạn của chương trình không cao bằng OOP.[2]

I.2 Ngôn ngữ UML

Ngôn ngữ mô hình hóa thống nhất - Unified Modeling Language, viết tắt là UML là một ngôn ngữ mô hình gồm các ký hiệu đồ họa mà các phương pháp hướng đối tượng sử dụng để thiết kế các hệ thống thông tin một cách nhanh chóng

Cách xây dựng các mô hình trong UML phù hợp mô tả các hệ thống thông tin cả về cấu trúc cũng như hoạt động Cách tiếp cận theo mô hình của UML giúp ích rất nhiều cho những người thiết kế và xây dựng hệ thống thông tin cũng như những người sử dụng nó UML tạo nên một cái nhìn bao quát và đầy đủ về hệ thống thông tin dự định xây dựng Cách nhìn bao quát này giúp nắm bắt trọn vẹn các yêu cầu của người dùng, phục vụ từ giai đoạn phân tích đến việc thiết kế, thẩm định và kiểm tra sản phẩm ứng dụng công nghệ thông tin Các mô hình hướng đối tượng được lập cũng là cơ sở cho việc ứng dụng các chương trình tự động sinh mã trong các ngôn ngữ lập trình hướng đối tượng, chẳng hạn như ngôn ngữ C++, C#, Java, PHP, … Phương pháp mô

Trang 5

hình này rất hữu dụng trong lập trình hướng đối tượng Các mô hình được

sử dụng bao gồm Mô hình đối tượng (mô hình tĩnh) và Mô hình động

UML sử dụng một hệ thống ký hiệu thống nhất biểu diễn các thành phần của mô hình (model elements) Tập hợp các thành phần của mô hình tạo thành các Sơ đồ UML (UML diagrams) Có các loại sơ đồ UML chủ yếu sau:

Sơ đồ lớp (Class Diagram)

Sơ đồ đối tượng (Object Diagram)

Sơ đồ tình huống sử dụng (Use Cases Diagram)

Sơ đồ trình tự (Sequence Diagram)

Sơ đồ cộng tác (Collaboration Diagram hay là Composite

Structure Diagram)

Sơ đồ trạng thái (State Machine Diagram)

Sơ đồ thành phần (Component Diagram)

Sơ đồ hoạt động (Activity Diagram)

Sơ đồ triển khai (Deployment Diagram)

Sơ đồ gói (Package Diagram)

Sơ đồ liên lạc (Communication Diagram)

Sơ đồ tương tác (Interaction Overview Diagram - UML

2.0) Sơ đồ phối hợp thời gian (Timing Diagram - UML 2.0)

Trong các sơ đồ thường dùng cho người phát triển phần mềm là

Use Case, sơ đồ trình tự, cộng tác và sơ đồ lớp.[3]

CHƯƠNG II: MỘT SỐ SƠ ĐỒ TRONG UML

II.1 Giới thiệu bài toán

Đề tài: Thiết kế trang web bán thiết bị điện tử công nghệ

Mô tả chi tiết: Trang web bán thiết bị điện tử công nghệ, kinh doanh các thiết

bị công nghệ như điện thoại, laptop, phụ kiện công nghệ, các linh kiện máy tính như màn hình, chuột, bàn phím

Cung cấp cho khách hàng các chức năng tìm kiếm và lựa chọn các sản phầm, đăng ký và đăng nhập, thêm vào giỏ hàng và thanh toán

Đối với người quản lý và nhân viên cung cấp các chức năng trang quản trị, quản lý thông tin khách hàng đăng ký, quản lý sản phẩm, xử lý đơn hàng và thống kê doanh thu

Trang 6

II.2 Sơ đồ Use Case

Sơ đồ UC khách hàng truy cập vào trang web

Sơ đồ UC quản lý sản phẩm:

Sơ đồ UC xử lý đơn hàng:

Trang 7

II.3 Mô tả một UC chi tiết

UC Nhân viên quản lý sản phẩm

Trang 8

Tác nhân Nhân viên bán hàng

thống

nhập đầy đủ các thông tin về sản phẩm và lưu sản phẩm Cập nhật thông tin về giá và khuyến mại cho các sản phẩm, đề xuất sản phẩm trên trang chủ

thống

mại

II.4 Sơ đồ trình tự

Sơ đồ trình tự nhân viên nhập sản phẩm:

II.5 Sơ đồ cộng tác

Sơ đồ cộng tác nhập sản phẩm:

Trang 9

II.6 Sơ đồ lớp

Trang 10

II.7 Phát sinh mã

//

//

/ Generated by StarUML(tm) C+

+ Add-In

/

/ @ Project : Untitled

/ @ File Name : NguoiDung.h

/ @ Date : 25/09/2021

//

//

#if !defined(_NGUOIDUNG_H)

#define _NGUOIDUNG_H

class NguoiDung {

public:

int MaNguoiDung;

int HoTen;

int TenDangNhap;

int MatKhau;

int Email;

int VaiTro;

int DiaChi;

int SoDienThoai;

int NgaySinh; };

#endif //_NGUOIDUNG_H

//

//

/ Generated by StarUML(tm) C+

+ Add-In

/

/ @ Project : Untitled

/ @ File Name : DanhMuc.h

/ @ Date : 25/09/2021

//

//

#if !defined(_DANHMUC_H)

#define _DANHMUC_H

class DanhMuc {

public:

int MaDanhMuc;

int TenDanhMuc; };

#endif //_DANHMUC_H

//

//

/ Generated by StarUML(tm) C++ Add-In

/ / @ Project : Untitled / @ File Name : San pham.h / @ Date : 25/09/2021 / @ Author :

//

//

#if !defined(_SAN PHAM_H)

#define _SAN PHAM_H

class San pham {

public:

int MaSanPham;

int TenSanPham;

int MoTaChiTiet;

int Gia;

int GhiChu;

int SoLuong;

int Model;

int KhoiLuong;

int NhaCungCap;

int MaDanhMuc; };

#endif //_SAN PHAM_H //

//

/ Generated by StarUML(tm) C+ + Add-In

/ / @ Project : Untitled / @ File Name : DonHang.h / @ Date : 25/09/2021 / @ Author :

//

//

#if !defined(_DONHANG_H)

#define _DONHANG_H

class DonHang {

public:

int MaDonHang;

int MaKhachHang;

int SoLuong;

int TinhTrang;

int TongGiaTri;

int NgayDat; };

#endif //_DONHANG_H

Trang 11

//

/ Generated by StarUML(tm) C++ Add-In

/

/ @ Project : Untitled

/ @ File Name : ChiTietDonHang.h

/ @ Date : 25/09/2021

//

//

#if !defined(_CHITIETDONHANG_H)

#define _CHITIETDONHANG_H

class ChiTietDonHang {

public:

int MaChiTiet;

int MaDonHang;

int MaSanPham;

int SoLuong;

int DonGia; };

#endif //_CHITIETDONHANG_H

CHƯƠNG III: DESIGN PATTERN

III.1 Giới thiệu

Theo định nghĩa, design pattern là giải pháp có thể tái sử dụng cho các vấn đề thường xảy ra (trong quá trình thiết kế phần mềm) Các design pattern bắt đầu trở thành các phương pháp hay nhất được áp dụng lặp đi lặp lại cho các vấn đề tương tự gặp phải trong các trường hợp khác nhau Chúng trở nên phổ biến sau khi chúng được tổng hợp trong cuốn sách Gang Of Four năm

1994 Ban đầu được xuất bản với các design pattern dành cho C ++, các design pattern rất phổ biến trong Java và C # có thể được áp dụng trong tất cả các ngôn ngữ hướng đối tượng Trong các ngôn ngữ chức năng như Scala, một số mẫu nhất định không còn cần thiết nữa.[5]

Các design pattern là giải pháp điển hình cho các vấn đề thường xảy ra trong thiết kế phần mềm Chúng giống như các bản thiết kế được tạo sẵn có thể tùy chỉnh để giải quyết vấn đề thiết kế lặp lại trong code

Các design pattern thể sao chép vào chương trình như hàm hay thư viện

có sẵn Design pattern không phải là một đoạn code cụ thể, mà là một khái niệm chung để giải quyết một vấn đề cụ thể Design pattern cung cấp các

Trang 12

hướng dẫn triển khai một giải pháp phù hợp với thực tế của từng chương trình khác nhau

Các design pattern thường bị nhầm lẫn với các thuật toán, bởi vì cả hai khái niệm đều mô tả các giải pháp điển hình cho một số vấn đề đã biết Mặc

dù một thuật toán luôn xác định một tập hợp các hành động rõ ràng có thể đạt được một số mục tiêu, nhưng một design pattern là một mô tả cấp cao hơn về một giải pháp Code của cùng một design pattern được áp dụng cho hai

chương trình khác nhau có thể khác nhau

Một thuật toán tương tự là một công thức nấu ăn: cả hai đều có các bước rõ ràng để đạt được mục tiêu Mặt khác, một design pattern giống như một bản thiết kế: bạn có thể xem kết quả và các tính năng của nó, nhưng thứ

tự thực hiện chính xác là tùy thuộc vào bạn.[4]

III.2 Các design pattern

III.2.1 Singleton

Single Pattern là một design pattern đảm bảo rằng một class chỉ có duy nhất một instance (khởi tạo) và cung cấp một cách toan câu để truy cấp tới instance đó

Ví dụ về sử dụng singleton trong Android:

Khi ứng dụng Android sử dụng mạng liên tục, cách hiệu quả nhất là tạo ra một kết nối truy cập duy nhất để kéo dài thời gian truy cập của ứng dụng, nghĩa là kết nối đó không bị khởi tạo lại nhiều lần Cách tiếp cận được đề xuất

là triển khai một lớp singleton có RequestQueue chức năng đóng gói và các chức năng khác của Volley RequestQueue phải được khởi tạo với

Application, không phải trong Activity (màn hình hoạt động) Điều này đảm

bảo rằng tùy chọn RequestQueue sẽ tồn tại trong suốt thời gian ứng dụng

hoạt động, thay vì được tạo lại mỗi khi hoạt động được tạo lại (ví dụ: khi người dùng xoay thiết bị)

Trang 13

III.2.2 Factory method

Factory method là một pattern thuộc nhóm creational patterns Định nghĩa interface giúp client tạo object nhưng ủy quyền cho các concreate factory để xác định class nào được trả về cho client Được sử dụng với mục đích đưa toàn bộ logic của việc tạo mới object vào trong factory, che giấu logic của việc khởi tạo, giảm sự phụ thuộc nhằm tăng tính mở rộng

III.2.3 Strategy

Strategy Pattern được sử dụng trong các tình huống các thuật toán hoặc hành vi của class là các hành vi động (có thể thay đổi) Điều này có nghĩa là

cả hành vi và thuật toán đều có thể thay đổi trong thời gian chạy, dựa vào đầu vào của client

Trang 14

Tương tự như State Pattern, Strategy Pattern sử dụng nhiều object xác

định, tùy thuộc vào các mục tiêu khác nhau

Khi nào nên sử dụng strategy pattern:

Chúng ta có thể thấy kiểu design phù hợp cho trường hợp cần có nhiều kiểu xử lý cho một yêu cầu nào đó, và có thể thay đổi chúng trong runtime

Có nhiều class tương tự nhau nhưng khác nhau về ở một vài xử lý nào đó Tính giá sản phẩm ở trên là một ví dụ

Tách logic xử lý của một class nào đó và ẩn nó trong một class mới Cách thức implement

Xác định logic cần tách ra 1 nhóm strategy riêng từ class gốc

Định nghĩa strategy

Tạo các concrete class của strategy interface trên

Ở class gốc, tạo 1 reference tới strategy interface (không phải concrete class) Cung cấp 1 cách thức để khởi tạo concrete class cho class gốc

III.2.4 Observer

Observer Pattern được sử dụng để theo dõi trạng thái của một object nhất định Thường là trong một nhóm hoặc một mối quan hệ một - nhiều

Trong những trường hợp như vậy, hầu hết thời gian và trạng thái thay đổi của một object sẽ ảnh hưởng đến trạng thái của phần còn lại Vì vậy, phải

Trang 15

có một hệ thống ghi nhận lại những thay đổi, và thông báo cho các object khác

III.2.5 Builder

Builder pattern là một trong những Design Pattern thuộc nhóm

Creational Design Pattern được sử dụng để xây dựng các object phức tạp với

số lượng lớn các class và tham số Nó thật sự không hữu ích lắm trong các class nhỏ, đơn giản không có nhiều constructor

Khi một chương trình có nhiều class, tham số, cũng như có nhiều constructor thì việc sử dụng Factory Pattern hay Abstract Factory Pattern thì

sẽ rất phức tạp Vì vậy chúng ta có thể sử dụng Builder Pattern để khắc phục

III.2.6 Adapter

Adapter Pattern là một mẫu cấu trúc (Structural Pattern)

Adapter Pattern cho phép các interface không liên quan tới nhau có thể

làm việc cùng nhau

Đối tượng giúp kết nối các interface gọi là Adapter

Ví dụ trong cuộc sống:

Cái sạc điện thoại hoạt động giống như adapter kết nối giữa nguồn điện của điện thoại là 3V với nguồn điện lưới là 240V

Cái phích cắm điện có 3 chân nhưng ổ điện chỉ có 2 lỗ thì phải dùng thêm 1 cái bộ chuyển để chuyển từ 3 chân sang 2 chân – bộ chuyển này cũng được gọi là adapter…

Client đưa ra yêu cầu cho adapter bằng cách gọi một phương thức trên

nó bằng giao diện đích

Adapter dịch yêu cầu đó trên adapter bằng giao diện của adapter

Client nhận được kết quả của cuộc gọi và không biết về sự hiện diện của adapter

The adapter pattern chuyển đổi giao diện của một lớp thành một giao diện khác mà client mong đợi, nó cho phép các lớp làm việc cùng nhau

mà các giao diện đó không tương thích với nhau

Ví dụ sử dụng Adapter Pattern:

Trang 16

Trong C# để kết nối đến SQL Server thông qua chuỗi kết nối chứa thông tin database, sau đó hiển thị lên bảng sẽ sử dụng DataGridView để mọi thay đổi trên bảng có thể chuyển thành truy vẫn SQL cập nhật vào database thông qua SqlAdapter biến sự thay đổi trên giao diện bảng thành code SQL cập nhật lên SQL Server

III.2.7 State

State Pattern là một trong những mẫu thiết kế thuộc nhóm Behavioral Design Patterns cho phép một object có thể biến đổi hành vi của nó khi có những sự thay đổi trạng thái nội bộ

Mẫu thiết kế này có thể được hiểu gần giống như Strategy, nó có thể chuyển đổi các chiến lược thông qua các phương thức được định nghĩa trong interface

Ứng dụng của State Pattern:

State Pattern sử dụng trong các trường hợp như sau:

Hành vi của một đối tượng phụ thuộc vào trạng thái của nó Tại thời điểm runtime, khi đối tượng thực hiện hành vi, trạng thái của nó sẽ thay đổi theo

Đối tượng có nhiều trường hợp sử dụng với các hành vi của nó, nhiều hành vi phụ thuộc vào trạng thái của đối tượng Hay nói cách khác, đối tượng

có nhiều trạng thái, mỗi trạng thái có những hành vi khác nhau

Ví dụ về state pattern trong React Js:

Ví dụ như khi có một form nhập input type text mỗi trường trong Form sẽ giữ lại trạng thái của nó dựa trên dữ liệu đầu vào của người dùng (user input) Nếu đầu vào của người dùng thay đổi, trạng thái của các text input sẽ thay đổi, đây là nguyên nhân cần re-rendering của component và tất

cả các component con của nó Và khi này chúng ta sẽ sử dụng state

Sử dụng state trong component:

Ngày đăng: 03/03/2022, 19:50

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w