lOMoARcPSD|61096548
Giai de oop cac nam - Giải đề oop các năm ( tham khảo thui nhe )
Lập trình hướng đối tượng (Trường Đại học Mở Thành phố Hồ Chí Minh)
lOMoARcPSD|61096548

- 
-  !"#$$%
lOMoARcPSD|61096548
- &"'()*+,#
+-./0
12$)#34
5.
- 67,8#)0
- 9:.0
- ;<$=>0
- 5?4.$@$#0
9! 
Abstract class ( trừu tượng ) Interface ( giao diện )
A B2-$C
#+D)#A2-$CB
#+D0
A 9<$0
A B!2E'AE'-F'
-F0
AB:G3#H/
I$JIC34D0
A K2-$L3M:2!
2-$--C$D0
-
-
-
-
;<$0
NB2-F'E0
9:G3#H
2-$--0
KI$JIO3M:
2!I$JIC34D0
Câu 3: Sửa lỗi sai và viết lại hàm child
PII$JIC34D'+I+I-C$:D
0 Q<2!-$$$34
- R>-$$3#'%$I$JI- STUB
-$$
10 Q$I-#HCD
- R>+$:C+I+I-DI$JI'B2V2&#HG&!
$I$JI0
- STW+#HCD
X0 B E $  
-Y
- R>C3D*Z-YCD:$[&\'3M
E
>:Z0
- ST2]^E
63I--T
I$JI_$I`)3
CDabbcB-$$
lOMoARcPSD|61096548
d
--$I+I+I-_$I
`$II3Ua
2$ICeD`
-0Ufea
d
gh)I$$3I
2)3CD`
-0Uif\a
d
2)3-YCD`bbcBB
E
-0CDa
Se-I+00$CUijDa
d
d2--k`
2-F)3+CS$lm$-D 0-YCDabb_$1j
`$I1fIY3C\Da
$IfIY$IC\Da 10-YCDabb_$\dd
R3--3
IUI3-$I`2
3CeD`
-I$CeDa
d
gh)I$$3I
2)3CD`
-0Uifjabb5^eWU:[&#\
d
gh)I$$3I
2)3-YCD`
-0CDa
Se-I+00$CUi\Dabb_$\
d
d
lOMoARcPSD|61096548
nop-
- IqI$)#-IqI$
- 2!-$$
--o
`$)IS$
Ia
2oCS$ID
`-0IfIa
d
lOMoARcPSD|61096548
2S$IICD`
$I$Ia
d
2)3-IICS$ID`
-0IfIa
d
d
--PRI`
$)I-Ffabbo+:+r)W 
$)IS$3a$)IS$Ia$)Io2a
2PRICS$I'o2D
`-03fsPRsiS$0J$+Cstj\3s'iiDa
-0IfIa
-02f2a
d
2oIoCD
`$I$2a
d
2)3-IoCo2D`
-02f2a
d
2S$IICD`
$I$Ia
d
2)3ICD`
Se-I+00$C3isAsiIisAsi20IICDDa
d
d
2--k`
2-F)3+CS$lm$-D`
bb.2u
o2fIYoCsosDa
lOMoARcPSD|61096548
bb.)W
PRIfIYPRICsvs'2Da
0ICDabbcGPRjjjjAvAo
bb.)W1)#ep2u
PRI1fIYPRIC0IICD'0IoCDDa
10IoCD0-IICsk$IFsDa
10ICDabbcGPRjjjj1AvAk$IF
d
d
\
iAAAAAAAAAAAAAAAAAAAi
wSRIw
iAAAAAAAAAAAAAAAAAAAi
wA+SRIS$w
wAIS$w
wAeIPS$w
wA2Q-Q-xoyw
iAAAAAAAAAAAAAAAAAAAi
wiI+oC2oD)3w
wiIoQ-CDQ-xoyw
iAAAAAAAAAAAAAAAAAAAi
iAAAAAAAAAAAAAAAAAAAi
wow
iAAAAAAAAAAAAAAAAAAAi
wA+oS$w
wAIoS$w
wAQS$w
wA35S$w
wAI+$zRS$w
iAAAAAAAAAAAAAAAAAAAi
wiICDS$w
wi-Iz5C35S$D)3w
iAAAAAAAAAAAAAAAAAAAi
iAAAAAAAAAAAAAAAAAAAi
w;zw
iAAAAAAAAAAAAAAAAAAAi
wAI;zS$w
wA3SRIQ-xS$yw
lOMoARcPSD|61096548
iAAAAAAAAAAAAAAAAAAAi
wiI+RICIS$D)3w
wiIRICD)3w
iAAAAAAAAAAAAAAAAAAAi
lOMoARcPSD|61096548
iAAAAAAAAAAAAAAAAAAAi
w;I{Qew
iAAAAAAAAAAAAAAAAAAAi
wA-RIQ-Q-xSRIyw
wA2Q-Q-xoyw
wAzQ-Q-x;zyw
iAAAAAAAAAAAAAAAAAAAi
wiF+9I+oCIS$D)3w
wi-cIoCD)3w
wiIoCD)3w
iAAAAAAAAAAAAAAAAAAAi
lOMoARcPSD|61096548
lOMoARcPSD|61096548

D
lOMoARcPSD|61096548
$:2!|)>
- $:2$:fy:|
2D
$II3+)$euB:!HMIC3M:-}3^
'D
zIJ+)NMIC3M:-}3^4$MID
D
Sự khác nhau giữa sta*c và thường (non-sta*c):
Trong lớp đối tượng:
Sta*c:)7lớp'-}^G&!.'$eu[W0
Non-sta*c:)7đối tượng'+<.B2&-$W'$eu[.
0
Trong quan hệ kế thừa:
Sta*c:
o QW4nhC+IAF+ID'<$>0
o 5"I:+'không override+#N2,ẩn (hidden)0
Non-sta*c:
o QWđộngC$F+ID'<$đa hình0
o 5"I. 'B:override0
1
- 9[&n)>
- -0)Iife+#IYCjD8#efj'efeie>ef

Preview text:

Giai de oop cac nam - Giải đề oop các năm ( tham khảo thui nhe )

Lập trình hướng đối tượng (Trường Đại học Mở Thành phố Hồ Chí Minh)

Câu 1: Cơ chế hoạt động pt khởi tạo kế thừa

  • Pt khởi tạo không được kế thừa ở lớp con
  • Thứ tự các pt khởi tạo được gọi là lớp cha trước rồi đến con
  • Pt khởi tạo lớp con phải gọi lớp cha, nếu không Java ngầm định là pt khởi tạo không tham số của cha.

Câu 2: Pb lớp trừu tượng và giao diện Giống:

  • Đều định nghĩa hành vi chung.
  • Không thể khởi tạo đối tượng.
  • Hỗ trợ tính đa hình.
  • Giúp thiết kế hệ thống rõ ràng.

Khác:

Abstract class ( trừu tượng )

Interface ( giao diện )

  • Có phương thức abstract (không thân hàm) và phương thức non-abstract (có thân hàm).
  • Không hỗ trợ đa kế thừa.
  • Có các biến final, non-final, static, nonstatic.

-Có thể cung cấp nội dung cài đặt cho pt của interface ( giao diện ).

  • Từ “abstract’ được dùng để khai báo abstract class ( lớp trừu tượng).

-

-

-

-

Hỗ trợ đa kế thừa.

Chỉ có biến static, final.

Không thể cung cấp nội dung cài đặt cho abstract class.

Từ “interface” được dùng để khai báo interface ( giao diện ).

Câu 3: Sửa lỗi sai và viết lại hàm child

Note: interface ( giao diện ), implements ( lớp triển khai )

1.

Lỗi khai báo constructor trong giao diện

  • Vì constructor dành cho lớp, không được tồn tại trong interface - Sửa: xóa constructor

2.

Lớp Parents không cài đặt phương thức inc()

  • Vì khi một lớp triển khai (implements) interface, nó bắt buộc phải cài đặt tất cả các phương thức trong interface.
  • Sửa: thêm cài đặt cho phương thức inc()

3.

Có final trong phương thức show

  • Vì lớp con (Child) cần ghi đè phương thức show() để cho ra kết quả 5, nếu dùng final

thì lớp con không thể ghi đè được.

  • Sửa: bỏ chữ final

Đoạn code sau khi sửa:

interface IParent { void inc(); // Xóa constructor

}

class Parent implements IParent { protected int x;

public Parent(int y) {

this.x = y;

}

@Override

public void inc() {

this.x += 5;

}

public void show() { // Xóa từ khóa

final

this.inc();

System.out.println(x + 10);

}

} public class Main {

public static void main(String[] args) o1.show(); // In ra 20

{ Parent o2 = new Child(5);

Parent o1 = new Parent(5); o2.show(); // In ra 5}}

Viết lớp Child: class Child extends Parent { public Child(int y) {

super(y);

}

@Override public void inc() {

this.x += 0; // Giữ nguyên x để kết quả là 5

}

@Override public void show() { this.inc();

System.out.println(x + 15); // In ra 5

}

}

Câu 4: Bổ sung

  • Thiếu getter và setter
  • Thiếu khai báo constructor

class BoPhan { private String ten;

public BoPhan(String ten) { this.ten = ten;

}

public String getTen() {

return ten;

}

public void setTen(String ten) {

this.ten = ten;

}

}

class NhanVien {

private static int count = 1; // Biến đếm để tạo mã nhân viên tự động private String id; private String ten; private BoPhan boPhan;

public NhanVien(String ten, BoPhan boPhan) { this.id = "NV" + String.format("%05d", count++);

this.ten = ten;

this.boPhan = boPhan;

}

public BoPhan getBoPhan() { return boPhan;

}

public void setBoPhan(BoPhan boPhan) {

this.boPhan = boPhan;

}

public String getTen() {

return ten;

}

public void hienThi() {

System.out.println(id + "-" + ten + "-" + boPhan.getTen());

}

}

public class Main {

public static void main(String[] args) { // Tạo đối tượng bộ phận

BoPhan b1 = new BoPhan("Ban hang");

// Tạo đối tượng nhân viên n1 NhanVien n1 = new NhanVien("A", b1); n1.hienThi(); // Xuất: NV00001-A-Ban hang

// Tạo đối tượng nhân viên n2 và thay đổi bộ phận NhanVien n2 = new NhanVien(n1.getTen(), n1.getBoPhan()); n2.getBoPhan().setTen("Marketing");

n2.hienThi(); // Xuất: NV00002-A-Marketing

} }

Câu 5:

+-------------------+

| SinhVien |

+-------------------+

| - maSinhVien: String |

| - hoTen: String |

| - chuyenNganh: String|

| - baoCaoList: List<BaoCao> |

+-------------------+

| + themBaoCao(baoCao: BaoCao): void |

| + getBaoCaoList(): List<BaoCao> |

+-------------------+

+-------------------+

| BaoCao |

+-------------------+

| - maBaoCao: String |

| - tenBaoCao: String |

| - chuoiLink: String | | - danhGia: String |

| - kiemTraDaoVan: String |

+-------------------+

| + getThongTin(): String |

| + setDanhGia(danhGia: String): void |

+-------------------+

+-------------------+

| HoiDong |

+-------------------+

| - tenHoiDong: String |

| - danhSachThanhVien: List<String> |

+-------------------+

| + themThanhVien(ten: String): void |

| + hienThiThanhVien(): void |

+-------------------+

+-------------------+

| HeThongQuanLy |

+-------------------+

| - sinhVienList: List<SinhVien> | | - baoCaoList: List<BaoCao> |

| - hoiDongList: List<HoiDong> |

+-------------------+

| + timKiemBaoCao(ten: String): void |

| + sapXepBaoCao(): void |

| + hienThiBaoCao(): void |

+-------------------+

Câu 1:

a)

Pt trừu tượng không thể khai báo tĩnh vì

- Pt trừu tượng được thiết kế để buộc lớp con triển khai => ko thể tĩnh b)

Protected: phạm vi truy cập có thể khác hoặc cùng package ( dùng để chia sẻ dl giữa lớp cha, con)

Default: phạm vi giới hạn chỉ cùng package ( dùng để chia sẻ dữ liệu trong cùng package) c)

Sự khác nhau giữa static và thường (non-static):

Trong lớp đối tượng:

  • Static: Thuộc về lớp, chia sẻ chung giữa tất cả các đối tượng, truy cập qua tên lớp.
  • Non-static: Thuộc về đối tượng, mỗi đối tượng có bản sao riêng, truy cập qua đối tượng.

Trong quan hệ kế thừa:

  • Static:
    • Liên kết tĩnh (compile-time), không hỗ trợ đa hình.
    • Gọi theo kiểu tham chiếu, không override mà chỉ bị ẩn (hidden).
  • Non-static:
    • Liên kết động (runtime), hỗ trợ đa hình.
    • Gọi theo đối tượng thực tế, có thể override.

Câu 2:

  • Kết quả 14 vì
  • this.value +=y mà new C(10) nghĩa là y =10, y=y+y thì y=