1. Trang chủ
  2. » Y Tế - Sức Khỏe

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

20 11 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 319,89 KB

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

Nội dung

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]

Trang 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

CHƯƠNG 5:

Trang 2

• Vấn đề tái sử dụng code & các hình thức

• Lý do thừa kế

• Lớp cơ sở

• Lớp dẫn xuất

• Sử dụng lớp cơ sở

• Constructor và thừa kế

• Access modifier: protected

• Lớp cơ sở của mọi lớp: Lớp object

• Lớp sealed và lớp partial

NỘI DUNG

2

Trang 3

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

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

– Hoặc phát triển thêm từ những 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ả năng bảo trì và khả năng mô hình hóa

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

Trang 4

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

• OOP: nhiều loại đối tượng có thuộc tính, hành vi tương tự nhau  tái sử dụng các lớp đã viết

• Trong một lớp vẫn tái sử dụng phương

thức

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

4

Trang 5

Có 3 hình thức:

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

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

Kết tập (Aggregation): Lớp mới là tập hợp

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

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

thêm các thuộc tính hoặc phương thức từ lớp đã có

Các hình thức tái sử dụng code

Trang 6

KẾT TẬP (aggregation)

6

Trang 7

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

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

Sử dụng các thuộc tính và phương thức của 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ó 3 điểm

Kết tập (Aggregation)

Trang 8

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

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

3, )

Dải số (0 1, 1 n)

Bất kỳ giá trị nào: *

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

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

8

Trang 9

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

public class Point

{

private int x;

private int y;

thức

}

public class Triangle

{

Point dinhA; //Đ nh A ỉ

Point dinhB; //Đ nh B ỉ

Point dinhC; //Đ nh C ỉ //Định nghĩa các phương thức

}

Trang 10

• Cài đặt lớp Point và 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 nếu có)

• Cài đặt lớp ListTriangle chứa danh sách các Triangle có chức năng: nhập, xuất và cho biết thông tin tam giác có diện tích lớn nhất

Bài tập tại lớp

10

Trang 11

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

• Mỗi xúc xắc sẽ có giá trị ngẫu nhiên từ 1 đến 6

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

• Hai người lần lượt gieo 1 hạt xúc xắc

• Sau mỗi lượt gieo, số điểm của lượt đó được tích lũy vào số điểm của người chơi tương ứng

• Sau các lượt gieo theo quy định, người thắng cuộc là người có tổng số điểm lớn

Bài tập ví dụ

Trang 12

Xúc xắc (XucXac)

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

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

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 hiện lớp và thông tin của lớp

12

Trang 13

Trận đấu (TranDau)

Thuộc tính: xúc xắc (xucXac), 2 người chơi (nguoiChoi), số vòng chơi (soVong), người thắng cuộc (nguoiThang)

Phương thức: bắt đầu (BatDau()), kết thúc (KetThuc), hiển thị thông tin (HienThi()), thực hiện trận đấu (ThucHienTranDau())

Phát hiện lớp và thông tin của lớp

Trang 14

Sơ đồ lớp

14

Trang 15

public class XucXac

private int giaTri;

//Định nghĩa Constructor và Property get, set //tại đây …

public void SinhGiaTri()

{

Random random = new Random ();

}

Trang 16

public class NguoiChoi

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

//tại đây

{

Console Write( "> Nhan Enter …" );

Console ReadLine();

xucXac.SinhGiaTri();

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

Console Write( " - Diem hien tai = " + this diem); }

Trang 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 tại đây

public void BatDau()

{

Console WriteLine( "Tran dau bat dau " );

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

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

nguoiChoi1.GieoXucXac(xucXac);

nguoiChoi2.GieoXucXac(xucXac);

}

Trang 18

public class TranDau

public void KetThuc()

{

}

Trang 19

public class TranDau

public void HienThi()

{

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

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

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

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

else

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

}

public void ThucHienTranDau()

{

BatDau();

HienThi();

Trang 20

• Hãy viết lại các lớp trong Bài tập ví dụ trên để 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), nếu người chơi nào thắng quá bán đầu tiên thì sẽ thắng

– VD: Giả sử 2 người chơi phải chơi 3 ván đấ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

Bài tập về nhà

20

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

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