- Nguyên lí cơ bản của lập trình hướng đối tượng : OOP có 3 nguyên lí cơ bản sau : Tính đóng gói : -Đóng gói quy tụ đặc trưng của 1 thực thể vào 1 hộp đen , cất giấu sự cài đặt các đặc
Trang 1Câu hỏi ôn tập Môn : phân tích thiết kế hệ thống
Tên : Vũ Xuân An
Lớp : Tin2.k19
Trang 2chương 1
câu 1 : Hướng đối tượng là gì ? trình bày nguyên lí cơ bản trong hướng đối
tượng ?
- hướng đối tượng (object oriented ) : trong thế giới thực , một đối tượng có hành vi
và đặc tính thì trong ngôn ngữ lập trình cũng tuân thủ theo nguyên tắc này Đối tượng trong ngôn ngữ lập trình chứa đựng các dữ liệu, trên các trường, thường được gọi là các thuộc tính; và mã nguồn, được tổ chức thành các phương
thức Phương thức giúp cho đối tượng có thể truy xuất và hiệu chỉnh các trường dữ liệu của đối tượng khác, mà đối tượng hiện tại có tương tác OOP chia đối tượng thành các lớp(class) và các đối tượng(object)
hiểu đơn giản như sau :
Trang 3- Nguyên lí cơ bản của lập trình hướng đối tượng :
OOP có 3 nguyên lí cơ bản sau :
Tính đóng gói :
-Đóng gói quy tụ đặc trưng của 1 thực thể vào 1 hộp đen , cất giấu sự cài đặt các đặc trưng này trong 1 giao diện
Thường biết đến với khái niệm cất giấu thông tin cho phép người sử dụng dùng đối tượng mà không cần biết đến sự cài đặt của giao diện
- Hay nói cách khách , đóng gói là ẩn dấu những thông tin không liên quan và hiển thị những thông tin liên quan
VD trong ngôn ngữ lập trình java có 4 hình thức đóng gói là default , protected , private , public
Ta có thể tham khảo bảng sau về mức độ truy cập của các hình thức đóng gói trong JAVA
Tính kế thừa
Khi bắt đầu xây dựng ứng dụng chúng ta sẽ bắt đầu việc thiết kế các lớp, thông thường chúng ta sẽ thấy có trường hợp một số lớp dường như có quan hệ với những lớp khác, chúng có những đặc tính khá giống nhau VD: 3 lớp trái cây , rau
củ …
Trang 4Ta thấy 2 lớp trái cây và rau củ đều có những thuộc tính và hành vi tương đồng , vì vậy thay vì sao chép những thuộc tính này, sẽ hay hơn nếu ta đặt chúng ở một nơi có thể dùng bởi những lớp khác Điều này được thực hiện bởi tính kế thừa trong OOP: chúng ta có thể định nghĩa lớp cha – base class (trong trường hợp này là Smartphone ) và có những lớp con kế thừa từ nó (derived class), ta có thể xem minh hoa ở hình bên dưới
Trang 5Tính đa hình
Tính đa hình (Polymorphism) trong Java được hiểu là trong từng trường hợp, hoàn cảnh khác nhau thì đối tượng có hình thái khác nhau tùy thuộc vào từng ngữ cảnh Đối tượng
có tính đa hình được xem như một đối tượng đặc biệt vì có lúc đối tượng này trở thành một đối tượng khác và cũng có lúc đối tượng này trở thành một đối tượng khác nữa (tùy vào từng hoàn cảnh) Sự "nhập vai" vào các đối tượng khác nhau này giúp cho đối tượng
đa hình ban đầu có thể thực hiện những hành động khác nhau của từng đối tượng cụ thể
Câu 2 :trình bày một số khái niệm cơ bản trong lập trình hướng đối tượng
1 Lập trình hướng đối tượng là gì:
Lập trình hướng đối tượng là chia bài toán thành các đối tượng, mỗi đối tượng gồm thuộc tính và phương thức để xử lý bài toán ta đi xây dựng mối quan hệ giữa các đối tượng và cho các đối tượng thực thi phương thức của chính nó
2 Các mối quan hệ của lập trình hướng đối tượng là gì?
Kế thừa: kế thừa là đối tượng con thừa hưởng phương thức và thuộc tính của đối tượng cha
phụ thuộc: 1 đối tượng được khai báo là 1 thuộc tính của đối tượng khác thì mối quan hệ đó là phụ thuộc
song song: 2 đối tượng k liên quan gì tới nhau
3 Cách xác định đối tượng, thuộc tính, phương thức trong bài toán.
Đối tượng là danh từ không có miền giá trị
Thuộc tính là danh từ có miền xác định
Phương thức là động từ mô tả hành động của đối tượng
4 Các tính chất của lập trình hướng đối tượng là gì Giải thích từng tính chất:
Có 4 tính chất:
Đóng gói: Tạo ra các gói để chứa các class có tính chất giống nhau
Kế thừa: Class con kế thừa thuộc tính và phương thức của class cha
Trang 6 Đa hình: 1 class có nhiều phương thức cùng tên nhưng khác số lượng tham số hoặc kiểu tham số hoặc class con có thể có phương thức giống với phương thức ở class cha Thể hiện bằng overload và overide
vd đa hình: 1 đối tượng có thể được khởi tạo bằng nhiều thể hiện khác
Tugiac tg=new TuGiac();
TuGiac tg2=new Hinhvuong();
TuGiac tg3=new HinhChuNhat();
Trừu tượng: Trừu tượng hóa đối tượng, khi phân tích 1 bài toán có rất nhiều thông tin, ta sẽ sử dụng tính trừu tượng và chỉ quan tâm đến những thứ liên quan đến bài toán
Tính trừu tượng giúp bạn tập trung vào những cốt lõi cần thiết của đối tượng thay
vì quan tâm đến cách nó thực hiện
Tính trừu tượng được thể hiện qua abtract và interface
5 Overloading and overiding là gì
Overloading (Nạp chồng) là việc 1 class có nhiều phương thức cùng tên nhưng khác tham số hoặc khác kiểu dữ liệu của tham số, nó thể hiện tính đa hình lúc biên dịch
Overriding (Ghi đè) là việc cài đặt lại các phương thức đã có ở lớp cha, các
phương thức override ở lớp con phải giống hệt lớp cha, nó thể hiện tính đa hình lúc runtime
6 Abstract class là gì?
Abstract class là 1 lớp trừu tượng, nó có thể chứa phương thức trừu tượng hoặc không trừu tượng
Abtract class dùng để miêu tả đối tượng có chung thuộc tính và phương thức nhưng có 1 vài phương thức có cụ thể hóa khác nhau nên ta cần có abstract
method
Có 2 loại method là abstract method và method thường:
abstract method là method trống không có thực thi
method thường là method có thực thi
Lưu ý: Các lớp chỉ có thể kế thừa một Abstract class
Trang 7 Hướng đến tính năng và những tính năng có thực thi được sử dụng làm hàm chung
cho các class extend nó
7 Interface là gì?
Interface là 1 bộ hành vi chung của các đối tượng, Nó bao gồm các method trừu
tượng
Không phải là class
Chỉ chứa những method/properties trống không có thực thi
Nó giống như một khuôn mẫu, một khung để để các lớp implement và follow
Các lớp có thể kế thừa nhiều interface
Là một contract, các class implement phải triển khai các method theo như
interface đã định nghĩa
8 So sánh abstract và interface.
Abstract class có phương thức abstract (không có thân
hàm) và phương thức non-abstract (có thân hàm),
constructor
Interface có phương thức abstract Nó có thêm các phương thức default và static
Abstract class không hỗ trợ đa kế thừa.( Dùng từ khóa
extend và chỉ đc extend 1 class.)
Interface có hỗ trợ đa kế thừa (Dùng từ khóa implement để thực thi, có thể implememnt nhiều interface.)
Abstract class có các biến final, non-final, static and
non-static Interface chỉ có các biến static và final.
Access modifier có thể là private, default, protected,
public Access modifier Chỉ có thể là public.
Abstract class có thể cung cấp nội dung cài đặt cho
phương thức của interface
Interface không thể cung cấp nội dung cài đặt cho phương thức của abstract class
Sử dụng từ khóa abstract để khai báo Sử dụng từ khóa implement
9 Kiểu dữ liệu là gì ?
Kiểu dữ liệu là một sự quy định về cấu trúc và miền giá trị dữ liệu và tập hợp các
phép toán tác động lên miền giá trị đó
Trang 8 Có 2 loại kiểu dữ liệu cơ bản: Kiểu dữ liệu nguyên thủy và kiểu dữ liệu có cấu trúc
Kiểu dữ liệu cơ bản có 8 loại: boolean, byte, short, int, long, float, double, char
10 Class, variable, method, contructor là gì?
Class là nhóm đối tượng có chung bản chất
Variable,Thuộc tính của đối tượng
Method là hành động của 1 đối tượng,
Contructor là phương thức để khởi tạo 1 đối tượng
11 Có mấy loại ép kiểu và tính chất của từng loại.
Có 2 loại ép kiểu:
Nới rộng(không mất dữ liệu)
thu hẹp(mất dữ liệu)
12 Access modify là gì Có những loại nào và tính chất của từng loại.
Các access modifiers xác định độ truy cập (Phạm vi) vào dữ liệu của của các trường, phương thức, class
Có 4 accessmodifier: Xem bảng minh họa để hiểu rõ cách dùng Access modify
13 Có những loại toán tử cơ bản nào
Toán tử số học: +, -,*,
/,%,++, Toán tử quan hệ: ==, !=, >, <, >=, <=
Toán tử logic: &&, || , !
Toán tử gán: = , +=, -= , *= , /=, %=
Trang 914 Có những loại cấu trúc rẽ nhánh nào Và khi nào thì nên dùng loại nào?
Có 2 loại là If/else và switch/case
If else dùng khi có nhỏ hơn 4 nhánh, còn lại dùng switchcase
15 Có những loại vòng lặp nào Khi nào dùng loại nào?
For, While, Do/while
For dùng khi biết trước số lần lặp
While dùng khi chưa biết số lần lặp
Do/while dùng khi chưa biết số lần lặp và cần chạy ít nhất 1 lần
16 Break và continue dùng như thế nào?
Break dùng để dừng vòng lặp
Continue dùng để bỏ qua lần lặp hiện tại và sang lần lặp tiếp theo
17 Supper là gì, This là gì Dùng this và supper trong trường hợp nào, Khác nhau giữa this và supper?
Super là toán tử đại diện cho class cha,
This là toán tử đại diện cho class gần nhất chứa nó
18 Khái niệm và mục đích mảng 1 chiều.
Quản lý tập hợp các phần tử có cùng bản chất hoặc cùng mộ hành vi
Có kích thước cố định
Quản lý đối tượng hoặc kiểu nguyên thủy
Dùng để giải quyết các bài toán liên quan đến quản lý các đối tượng có chung bản chất hoặc có chung bộ hành vi mà số lượng các phần tử là cố đinh
19 Cách khai báo, khởi tạo, cách dùng mảng 1 chiều.
Khai báo: <KieuDuLieu>[] <ten>; <KieuDuLieu> <ten>[];
Khởi tạo: <ten> = new <KieuDuLieu>[<SoLuong>]; Int[] arrInt = new int[3]; arrInt[0] = 1;
20 Khi khai báo 1 mảng 10 phần tử mà k có đủ 10 ô liền nhau thì sẽ ntn?
Trang 10 Nếu không tìm đc vùng nhớ thích hợp nó sẽ reallowcate bộ nhớ để tìm vùng nhớ phù hợp
Câu 3 : trình bày các pha cơ bản của lập trình hướng đối tượng
Bước 1: Xác định các yêu cầu người sử dụng cho hệ thống hướng đối tượng
Bước 2: Chọn các lớp và đối tượng sử dụng hướng dẫn của mô hình yêu cầu
Bước 3: Xác định các thuộc tính và phương thức của mỗi lớp
Bước 4: Định nghĩa cấu trúc và phân cấp tổ chức các lớp
Bước 5: Xây dựng mô hình quan hệ đối tượng
Bước 6: Xây dựng mô hình hành vi đối tượng
Bước 7: Xem xét lại mô hình phân tích hướng đối tượng với các yêu cầu và các chuẩn
Chương 2
Câu 1 : Trình bày các phần tử mô hình của mô hình UML, các quan hệ trong UML, các loại biểu đồ trong UML và các luật ràng buộc , Với mỗi khái niệm hãy cho ví
dụ minh họa trong thực tế?
1.1 các phần tử của mô hình UML
Các phần tử của mô hình UML
I Phần tử cấu trúc: Tương ứng với các danh từ,là phần tử tĩnh của mô hình,tái hiện các thực thể hay các khái niệm vật lý,có 7 loại phần tử cấu trúc trong UML
1 Lớp (class): Lớp là sự mô tả một tập các đối tượng có cùng thuộc tính, thao tác, quan hệ và ngữ nghĩa.Lớp được biểu diễn bởi một hình chữ nhật cùng với các đặc tả tên lớp,các thuộc tính và thao tác
VD : ví dụ về class khi khởi tạo 1 đối tượng là 1 con chó
Trang 11Tên class
Thuộc tính
Hành vi
Khai báo class
public class Dog {
String breed;
String size;
int age;
String color;
public String getInfo() {
return ("Breed is: "+breed+" Size is:"+size+" Age is:"+age+" color is: "+color); }
}
2 Giao diện (interface): Giao diện là một tập các thao tác, đặc tả dịch vụ của một lớp hay thành phần( mô tả các hành vi có thể quan sát bên ngoài của một thực
thể).Giao diện được biểu diễn bởi một hình tròn cùng tên của nó
VD :
interface printable {
void print();
}
class A6 implements printable {
public void print() {
System.out.println("Hello");
}
Trang 12
public static void main(String args[]){
A6 obj = new A6();
obj.print();
}
}
3 Cộng tác: Cộng tác xác định sự tương tác giữa các đối tượng.Cộng tác được biểu diễn bằng hình elip với đường nét đứt, kèm tên cộng tác
VD:
4 Ca sử dụng (use case): Ca sử dụng mô tả chuỗi các hành động mà hệ thống thực hiện để tạo ra một kết quả có thể quan sát được cho một tác nhân cụ thể.Ca sử dụng được biểu diễn bằng hình elip nét liền
5 Lớp tích cực (active class): Lớp tích cực là lớp mà các đối tượng của nó quản lý một hay nhiều tiến trình hay luồng xử lý (các đối tượng biểu diễn các phần tử có hành
vi tương tranh.Lớp tích cực biểu diễn bằng hình chữ nhật có các đường viền được tô đậm
6 Thành phần (component): Thành phần biểu diễn một phần vật lý có thể thay thế của hệ thống Nó cài đặt cho một tập các giao diện
7 Nút (node): Nút biểu diễn các thành phần vật lý của hệ thống
VD : 1 node database server
Trang 13II Phần tử hành vi: Là các phần tử mô hình UML mang khía cạnh Nó biểu diễn các hoạt động của mô hình, các hành vi động theo thời gian và không gian
1 Phần tử hành vi tương tác: Tương tác biểu diễn hành vi bằng các mô tả quá trình trao đổi thông điệp giữa các đối tượng trong một ngữ cảnh cụ thể, để hoàn thành một mục đích nào đó
2 Phần tử hành vi máy trạng thái: Tương tác máy trạng thái là loại hành vi đặc tả chuỗi các trạng thái của một đối tượng hay một tương tác diễn ra trong vòng đời của chúng để đáp lại các sự kiện
III Phần tử nhóm: Là phần tử đóng vai trò tổ chức trong mô hình UML
IV Phần tử chú thích: Là bộ phận chú giải trong mô hình UML
1.2 các quan hệ trong UML
có 4 loại quan hệ trong UML
- quan hệ phụ thuộc
Ví dụ :
Association: thường được dùng để mô tả mối quan hệ giữa Actor và Use Case và giữa các Use Case với nhau
Ví dụ quan hệ association:
Trang 14- quan hệ kết hợp
Ví dụ : Include là quan hệ giữa các Use Case với nhau, nó mô tả việc một Use Case lớn được chia ra thành các Use Case nhỏ để dễ cài đặt (module hóa) hoặc thể hiện sự dùng lại
Ví dụ quan hệ include:
- quan hệ khái quát hóa Extent: Extend dùng để mô tả quan hệ giữa 2 Use Case Quan hệ Extend được sử dụng khi có một Use Case được tạo ra để bổ sung chức năng cho một Use Case có sẵn và được sử dụng trong một điều kiện nhất định nào đó
Ví dụ quan hệ extent:
Trang 15- quan hệ hiện thực hóa
Generalization: được sử dụng để thể hiện quan hệ thừa kế giữa các Actor hoặc giữa các Use Case với nhau
Ví dụ quan hệ Generalization:
1.3 : Các loại biểu đồ trong UML
Có 9 loại biểu đồ trong UML
1.Ca sử dụng
2.Lớp
3.Trạng thái
4.Hoạt động
5.Cài đặt
6.Đối tượng
7.Tuần tự
8.Tương tác
9.Thành phần
Trang 161.5 : Các luật ràng buộc
I Các luật và ràng buộc trong UML: một số luật về cách thức xây dựng mô hình
Mô hình hợp lệ là mô hình nhất quán về mặt ngữ nghĩa với bản thân nó cũng như với các mô hình liên quan đến nó
Luạt ngữ nghĩa
1 Quy cách về tên gọi
2 Quy cách về phạm vi
3 Quy cách về khả năng truy cập
4 Quy cách về tính toàn vẹn
5 Quy cách về sự thực thi
Chương 3
Câu 1 : phân biệt mô hình ca sử dụng và biểu đồ ca sử dụng
Mô hình ca sử dụng được định nghĩa bởi:
1 Các biểu đồ ca sử dụng
2 Phần mô tả bằng lời các kịch bản sử dụng thường dùng:
o Biểu đồ tuần tự: được sử dụng để xác định và chỉ rõ vai trò của các đối tượng tham gia vào luồng sự kiện của use case.Biểu đồ tuần tự cũng nêu bật sự tương tác sẽ xảy ra tại một thời điểm nào đó trong quá trình thực thi của hệ thống
o Biểu đồ tương tác: Mô hình hóa phương diện động của hệ thống, mô tả tương tác giữa các đối tượng.Thường được dùng để mô tả kịch bản của use case
Biểu đồ ca sử dụng được định nghĩa:
1 Các tác nhân:Một tác nhân là một người hoặc một vật nào đó tương tác với hệ thống, sử dụng hệ thống Tác nhân giữ vai trò người dùng hệ thống, phần cứng hoặc các
hệ thống khác bên ngoài
2 Các ca sử dụng: là đơn vị công việc riêng lẻ Nó cung cấp một cái nhìn cấp cao của người ngoài hệ thống về một hành vi có thể nhận thấy được của hệ thống
3 Quan hệ giữa các tác nhân và các ca sử dụng:quan hệ kế hợp(Association), quan
hệ gộp(Includes),quan hệ mở rộng(Extends), quan hệ tổng quát hóa(Generalization)
Bài tập 2: Vẽ biểu đồ use cases cho các hệ thống phần mềm