Bài giảng Lập trình hướng đối tượng: Chương 5 - ĐH Ngoại ngữ - Tin học

20 10 0
Bài giảng Lập trình hướng đối tượng: Chương 5 - ĐH Ngoại ngữ - Tin học

Đ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

Nếu người chơi nào thắng trước 2 ván thì người chơi đó thắng cả trận đấu. – Nếu hòa thì tính điểm để kết luận người thắng[r]

(1)

Click to edit Master subtitle style

THỪA KẾ

Khoa Công nghệ thông tin

Trường Đại học Ngoại ngữ - Tin học, TP.HCM

(2)

• Vấn đề tái sử dụng code & hình thức • Lý thừa kế

• Lớp sở

• Lớp dẫn xuất

• Sử dụng lớp sở

• Constructor thừa kế

• Access modifier: protected

• Lớp sở lớp: Lớp object • Lớp sealed lớp partial

NỘI DUNG

(3)

• Xuất phát từ nhu cầu:

– Sử dụng lại đoạn code có sẵn

– Hoặc phát triển thêm từ code có sẵn

mà khơng phải viết lại từ đầu

 Ưu điểm:

– Giảm chi phí

– Nâng cao khả bảo trì khả mơ

hình hóa

(4)

• Lập trình cấu trúc: chương trình

• OOP: nhiều loại đối tượng có thuộc tính,

hành vi tương tự  tái sử dụng

lớp viết

• Trong lớp tái sử dụng phương

thức

Vấn đề tái sử dụng code

(5)

Có hình thức:

• Sao chép lớp cũ thành lớp khác

 Hạn chế: Dư thừa, khó quản lý có thay

đổi

• Kết tập (Aggregation): Lớp tập hợp

hoặc sử dụng (khơng thay đổi) lớp có

• Thừa kế (Inheritance): Lớp phát triển

thêm thuộc tính phương thức từ lớp có

(6)

KẾT TẬP (aggregation)

(7)

• Thành phần lớp chứa đối tượng

của lớp cũ

– Lớp mới: Lớp chứa/Lớp toàn thể

Sử dụng thuộc tính phương thức lớp thành phần thông qua đối tượng

– Lớp cũ: Lớp thành phần

• Ví dụ:

– Lớp cũ: Điểm (Point)

– Lớp mới: Tam giác (Triangle) có điểm

(8)

Số lượng lớp thành phần lớp chứa có thể:

1 số nguyên dương (1, 2,

3, )

Dải số (0 1, n)Bất kỳ giá trị nào: *

Không ghi: mặc định 1

Ký hiệu quan hệ kết tập

(9)

Ví dụ quan hệ kết tập

public class Point

{

private int x;

private int y;

//Định nghĩa phương thức

}

public class Triangle

{

Point dinhA; //Đ nh Aỉ

Point dinhB; //Đ nh Bỉ

Point dinhC; //Đ nh Cỉ

//Định nghĩa phương thức

(10)

• Cài đặt lớp Point lớp Triangle có chức

năng:

– Nhập – Xuất

– Tính chu vi – Tính diện tích

(Mỗi lớp phải có: Property get, set; constructor; kiểm tra ràng buộc có)

• Cài đặt lớp ListTriangle chứa danh sách

các Triangle có chức năng: nhập, xuất cho biết thơng tin tam giác có diện tích lớn

Bài tập lớp

(11)

Xây dựng chương trình trị chơi xúc xắc với cách chơi sau:

• Mỗi xúc xắc có giá trị ngẫu nhiên từ

đến

• Quy định số lần gieo xúc xắc

• Hai người gieo hạt xúc xắc

• Sau lượt gieo, số điểm lượt

được tích lũy vào số điểm người chơi tương ứng

• Sau lượt gieo theo quy định, người

thắng người có tổng số điểm lớn Bài tập ví dụ

(12)

• Xúc xắc (XucXac)

– Thuộc tính: giá trị mặt (giaTri)

– Phương thức: sinh ngẫu nhiên giá trị mặt

xúc xắc (SinhGiaTri())

• Người chơi (NguoiChoi)

– Thuộc tính: tên (ten), điểm (diem)

– Phương thức: gieo xúc xắc (GieoXucXac())

Phát lớp thông tin lớp

(13)

• Trận đấu (TranDau)

– Thuộc tính: xúc xắc (xucXac), người chơi

(nguoiChoi), số vòng chơi (soVong), người thắng (nguoiThang)

– Phương thức: bắt đầu (BatDau()), kết thúc

(KetThuc), hiển thị thông tin (HienThi()), thực trận đấu (ThucHienTranDau())

(14)

Sơ đồ lớp

(15)

public class XucXac

private int giaTri;

//Định nghĩa Constructor Property get, set //tại …

public void SinhGiaTri() {

Random random = new Random();

(16)

public class NguoiChoi

private String ten;

private int diem;

//Định nghĩa constructor, property get, set //tại

public void GieoXucXac(XucXac xucXac) {

Console.Write("> Nhan Enter …");

Console.ReadLine(); xucXac.SinhGiaTri();

this.diem += xucXac.GiaTri; //get giá trị xucXac

(17)

public class TranDau

private XucXac xucXac;

private NguoiChoi nguoiChoi1;

private NguoiChoi nguoiChoi2;

private NguoiChoi nguoiThang;

private int soVong;

//Định nghĩa constructor, property get, set

public void BatDau() {

Console.WriteLine("Tran dau bat dau ");

for (int i = 1; i <= this.soVong; i++) {

Console.WriteLine("***** Vong {0} *****", i);

Console.WriteLine(nguoiChoi1.Ten+" gieo xuc xac"); nguoiChoi1.GieoXucXac(xucXac);

Console.WriteLine(nguoiChoi2.Ten+" gieo xuc xac"); nguoiChoi2.GieoXucXac(xucXac);

(18)

public class TranDau

public void KetThuc() {

int diem1 = nguoiChoi1.Diem;

int diem2 = nguoiChoi2.Diem;

if (diem1 > diem2)

this.nguoiThang = this.nguoiChoi1;

else if (diem2 > diem1)

(19)

public class TranDau

public void HienThi() {

Console.WriteLine("*** Ket qua tran dau ***");

Console.WriteLine("- Diem cua {0}: {1}", nguoiChoi1.Ten, nguoiChoi1.Diem);

Console.WriteLine("- Diem cua {0}: {1}", nguoiChoi2.Ten, nguoiChoi2.Diem);

if (nguoiThang != null)

Console.WriteLine("Nguoi thang: " + nguoiThang.Ten);

else

Console.WriteLine("Tran dau hoa!!!"); }

public void ThucHienTranDau() {

BatDau();

(20)

• Hãy viết lại lớp Bài tập ví dụ để

thoả yêu cầu sau:

– Có thêm thuộc tính soBanThang ghi lại số bàn

thắng

– Cho biết số ván đấu (>2), người chơi

thắng bán thắng

– VD: Giả sử người chơi phải chơi ván đấu

Nếu người chơi thắng trước ván người chơi thắng trận đấu

– Nếu hịa tính điểm để kết luận người thắng

Bài tập nhà

Ngày đăng: 30/03/2021, 06:16

Tài liệu cùng người dùng

Tài liệu liên quan