Bài tập thực hành:LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

35 115 0
Bài tập thực hành:LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Đ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

TRƯỜNG ĐẠI HỌC NGOẠI NGỮ - TIN HỌC TP.HCM KHOA CƠNG NGHỆ THƠNG TIN Biên soạn: Tơn Quang Toại TP.HỒ CHÍ MINH, 2016 MỤC LỤC NỘI DUNG TRANG BUỔI LỚP VÀ ĐỐI TƯỢNG (1/3) BUỔI LỚP VÀ ĐỐI TƯỢNG (2/3) BUỔI LỚP VÀ ĐỐI TƯỢNG (3/3) BUỔI OPERATOR OVERLOADING 12 BUỔI THỪA KẾ 15 BUỔI ĐA HÌNH (1/2) 19 BUỔI ĐA HÌNH (2/2) 25 BUỔI INTERFACE 27 BUỔI XỬ LÝ NGOẠI LỆ 29 BUỔI LỚP VÀ ĐỐI TƯỢNG (1/3) MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Hiểu nguyên tắc (trụ cột đầu tiên) lập trình hướng đối tượng: Đóng gói (Encapsulation) Hiểu cách mơ hình đối tượng/lớp đơn giản giới thực thành đối tượng/lớp lập trình Biết Hiểu rõ thành phần lớp a Fields b Constructors c Methods Có kỹ xây dựng lớp đơn giản, với phương thức tính tốn đơn giản thơng qua ngơn ngữ lập trình C# Bài Xây dựng lớp Account Một tài khoản ngân hàng khách hàng có số thơng tin: Mã số tài khoản, số tiền • Khai báo fields • Thêm phương thức constructor để tạo đối tượng tài khoản có thơng tin • Thêm phương thức Get/Set cho fields Viết phương thức Main() • Dùng constructor để tạo tài khoản, sau xuất thơng tin tài khoản lên hình • Thay đổi số tiền tài khoản, sau xuất lại thơng tin tài khoản lên hình Trang Ví dụ: Thong tin tai khoan hien tai: - Ma so tai khoan: 123456 - So tien: 1000000 Thong tin tai khoan sau cap nhat: - Ma so tai khoan: 123456 - So tien: 800000 Bài Xây dựng lớp Book Một sách chứa số thông tin: mã sách, tên sách, giá sách, giảm giá • Khai báo fields • Thêm phương thức constructors để: o Tạo đối tượng sách có mã sách tên sách o Tạo đối tượng sách có đầy đủ thơng tin • Thêm phương thức Get/Set cho fields • Thêm phương thức tính giá bán sách, biết rằng: Giá bán sách = Giá sách – Giảm giá Viết phương thức Main() • Dùng constructor để tạo sách • In thơng tin sách hình, sau tính xuất giá bán sách • Thay đổi Giảm giá, sau in thơng tin sách hình • Tính xuất giá bán sách Ví dụ: Thong tin quyen sach hien tai: - Ma so sach: B1234 - Ten sach: Mindset - Gia sach: 70000 - Giam gia: 7000 Gia ban cua sach: 63000 Thong tin quyen sach sau cap nhat: - Ma so sach: B1234 Trang - Ten sach: Mindset - Gia sach: 70000 - Giam gia: 24000 Gia ban cua sach: 46000 Bài Xây dựng lớp Student Một sinh viên có số thơng tin: mã sinh viên, họ tên, năm sinh, địa • Khai báo fields • Thêm constructors để: o Tạo đối tượng có mã sinh viên tên sinh viên o Tạo đối tượng có đầy đủ thơng tin • Thêm phương thức Get/Set cho fields • Thêm phương thức tính tuổi sinh viên Viết phương thức Main() dùng constructor để tạo sinh viên, sau in thơng tin sinh viên hình tính tuổi sinh viên Ví dụ: Thong tin sinh vien: - Ma sinh vien: TH151234 - Ho ten: Nguyen Van A - Nam sinh: 1997 - Dia chi: 123 Nguyen Trai, P10, Q5, TP.HCM Tuoi cua sinh vien: 19 tuoi Bài Xây dựng lớp Circle Một hình trịn có bán kính r • Khai báo field • Thêm constructors: o Constructor dùng để tạo đối tượng hình trịn có bán kính r o Constructor khơng có tham số (cịn gọi parameterless constructor hay default constructor) để tạo đối tượng hình trịn có bán kính r Trang • Thêm phương thức Get/Set cho field • Thêm phương thức Input() để nhập thơng tin hình trịn từ bàn phím • Thêm phương thức Output() để xuất thơng tin hình trịn hình • Thêm phương thức tính diện tích hình trịn: 𝑆 = 𝜋 𝑟 • Thêm phương thức tính chu vi hình trịn: 𝐶 = 𝜋 𝑟 Viết phương thức Main() • Dùng default constructor để tạo hình trịn có giá trị mặc định • Xuất thơng tin hình trịn hình • Nhập bán kính khác cho hình trịn từ bàn phím • In thơng tin hình trịn nhập, sau tính diện tích chu vi hình trịn Ví dụ: Thong tin hinh tron: Ban kinh r: Nhap hinh tron: Nhap ban kinh r: 16 Thong tin hinh tron: Ban kinh r: 16 Dien tich hinh tron: … Chu vi hinh tron: … Trang BUỔI LỚP VÀ ĐỐI TƯỢNG (2/3) MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Có kỹ sử dụng properties Có kỹ sử dụng lớp xây dựng: a Tạo Mảng đối tượng lớp xây dựng b Tạo Field lớp có kiểu lớp khác Bài Dùng property với lớp Account Trong lớp Account thay phương thức Get/Set thành properties Và kiểm tra tính hợp lệ trước thay đổi liệu field • Số tiền phải số dương Bài Dùng properties với lớp Book Trong lớp Book thay phương thức Get/Set thành properties Và kiểm tra tính hợp lệ trước thay đổi liệu fields • Tên sách khơng chuỗi rỗng • Giá sách phải số dương • Giảm giá khơng số âm Bài Dùng properties với lớp Student Trong lớp Student thay phương thức Get/Set thành properties Và kiểm tra tính hợp lệ trước thay đổi liệu fields • Họ tên khơng chuỗi rỗng • Năm sinh phải số dương • Địa không chuỗi rỗng Trang Bài Dùng properties với lớp Circle Trong lớp Circle thay phương thức Get/Set thành properties Và kiểm tra tính hợp lệ trước thay đổi liệu field • Bán kính r phải số không âm Bài Sử dụng mảng đối tượng lớp Circle Tạo project mới, sau thêm lớp Circle project vào project Viết phương thức Main() • Khai báo nhập n hình trịn (số n nhập từ bàn phím) • Xuất thơng tin n hình trịn nhập hình • Tính xuất diện tích hình trịn • Tìm diện tích lớn n hình trịn Ví dụ: Nhap so duong tron n: Nhap duong tron thu 1: Ban kinh r: Nhap duong tron thu 2: Ban kinh r: Nhap duong tron thu 3: Ban kinh r: 15 duong tron da nhap: Ban kinh r: Ban kinh r: Ban kinh r: 15 Dien Dien Dien Dien tich tich tich tich cua duong duong duong duong tron: tron 1: … tron 2: … tron 3: … Dien tich duong tron lon nhat: … Bài Tạo lớp Color Trên máy tính, màu (color) biểu diễn giá trị red, green, blue (có giá trị từ đến 255) alpha (hay transparency, mức độ suốt màu, Trang có giá trị từ đến 255, với hoàn toàn suốt, 255 đậm đặc) Hãy tạo lớp Color • Thêm instance variables (một cách gọi khác fields) • Thêm constructors o Constructor không tham số (default constructor) để tạo đối tượng cho fields: red, green, blue, alpha có giá trị mặc định 255 (màu trắng) o Constructor có tham số để tạo đối tượng màu có thơng tin o Constructor có tham số đối tượng color cho trước Constructor có nhiệm vụ tạo đối tượng màu chép thông tin đối tượng color tham số vào đối tượng tạo (Người ta gọi constructor Copy constructor) public Color() {} public Color(int red, int green, int blue, int alpha) {} public Color(Color color) {} • Thêm properties cho fields với ràng buộc field mơ tả • Thêm phương thức tính giá trị mức xám (grayscale) màu (grayscale trung bình red, green, blue) Bài Xây dựng lớp Ball, sử dụng lớp Color làm field Trái banh có fields: kích thước (size hay radius), màu sắc (color) số lần ném banh (timeOfThrown) • Khai báo fields cho Ball (field color nên dùng kiểu Color tạo trước) • Thêm constructors o Constructor khơng tham số để tạo đối tượng Ball có thơng tin mặc định: kích thước 1, số lần ném banh 0, màu màu mặc định o Constructor có tham số để tạo đối tượng có thơng tin Trang • Thêm properties cho fields (nhớ ràng buộc liệu hợp lý) • Thêm phương thức Pop (Pop nghĩa mơ hình việc làm cho trái banh nổ): Banh nổ nghĩa thay đổi size thành giá trị • Thêm phương thức Throw (Throw nghĩa mơ hình việc ném trái banh): Ném banh nghĩa cộng vào số lần ném (nhưng cộng banh chưa bị nổ) • Viết phương thức Input() để nhập thơng tin trái banh • Viết phương thức Output() xuất thông tin trái banh Viết phương thức Main() • Khai báo tạo n trái banh có giá trị mặc định (số n nhập từ bàn phím) • Nhập lại thơng tin trái banh thứ • Xuất thơng tin n trái banh hình (kiểm tra xem liệu có mong đợi khơng) • Ném trái banh thứ 1, • Cho nổ trái banh thứ nén trái banh thứ • In số lần nén trái banh Trang BUỔI ĐA HÌNH (1/2) MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Hiểu nguyên tắc thứ ba (trụ cột thứ ba) lập trình hướng đối tượng: đa hình (polymorphím) - sau đóng gói (encapsulation) thừa kế (inheritance) Có kỹ thực bước xây dựng lớp/phương thức có tính đa hình a Hiểu từ khóa virtual lớp sở b Có kỹ override method lớp dẫn xuất Sử dụng lớp/phương thức có tính đa hình Bài Biết Hiểu bước xây dựng phương thức có tính đa hình Có loại xe (Car): LandRover, Ford, Honda cần mơ hình máy tính LandRover Ford Honda Mỗi loại xe tương ứng với lớp: Lớp LandRover, lớp Ford, lớp Honda Mỗi loại xe di chuyển (Move) dùng động khác • Xe LandRover : Dùng động 2.0 L engine • Xe Ford : Dùng động V engine • Xe Honda : Dùng động i-vtec engine Như vậy, lớp có phương thức Move() riêng để xuất hình thơng tin động xe dùng Trang 19 Hãy thiết kế lớp viết phương thức Move() lớp cho: - Lúc đầu người dùng tạo danh sách chứa đối tượng (danh sách vừa chứa xe LandRover, vừa chứa xe Ford vừa chứa xe Honda, loại xe tạo nhiều lần) - Với danh sách đối tượng tạo, lệnh Move (Gọi phương thức Move()) cho đối tượng danh sách, đối tượng dùng động tương ứng để di chuyển (yêu cầu, cần xuất hình xe di chuyển động phương thức Move()) Người ta nói, phương thức Move() có tính đa hình Cụ thể, thiết kế lớp viết phương thức Move() cho phương thức Main() hoạt động cho kết sau: static void Main() { Car[] cars = new Car[3]; cars[0] = new LandRover(); cars[1] = new Ford(); cars[2] = new Honda(); foreach (Car car in cars) car.Move(); } Phương thức Move() chạy cho kết quả: car.Move() gọi Move() lớp LandRover Move: LandRover (2.0 L engine) Move: Ford (V engine) car.Move() gọi Move() lớp Ford Move: Honda (i-vtex engine) car.Move() gọi Move() lớp Honda Trang 20 Sơ đồ thừa kế: • Cài đặt sơ đồ thừa kế • Cài đặt phương thức Move() cho phương thức có tính đa hình • Trong phương thức Main(), viết lệnh kiểm tra tính đa hình phương thức Move() mơ tả Chú ý: Phương thức Main() viết khác (Dùng collection có tên List) static void Main() { List cars = new List(); cars.Add(new LandRover()); cars.Add(new Ford()); cars.Add(new Honda()); foreach (Car car in cars) car.Move(); } Trang 21 Kết thực lệnh là: Move: LandRover (2.0 L engine) Move: Ford (V engine) Move: Honda (i-vtex engine) Bài Tính đa hình phương thức tính diện tích Area() hình Có loại hình khác cần quản lý: hình chữ nhật (Rectange), hình trịn (Circle) radius o height width • Hình chữ nhật: có chiều cao (height) chiều rộng (width) • Hình trịn: có bán kính radius Diện tích hình tính sau: 𝑆𝑐ℎữ 𝑛ℎậ𝑡 = ℎ𝑒𝑖𝑔ℎ𝑡 × 𝑤𝑖𝑑𝑡ℎ ỡ ũ = 3.14 ì Yờu cu: ã Hãy thiết kế lớp (vẽ sơ đồ lớp) cho tốn cho phương thức tính diện tích Area() hình có tính đa hình (chú ý: lớp sở khơng cần phải có fields) • Hãy cài đặt sơ đồ lớp cho phương thức tính diện tích Area() hình có tính đa hình • Tạo danh sách chứa số đối tượng Rectangle, Circle (dùng phương thức constructor để tạo đối tượng) • Tính diện tích hình (xuất diện tích hình) Trang 22 • Tính tổng diện tích hình Bài Tính đa hình phương thức nhập (Input())/xuất (Output()) Trong 2, • Viết phương thức nhập liệu Input() cho lớp hình chữ nhật hình trịn cho phương thức có tính đa hình • Viết phương thức xuất liệu Output() cho lớp hình chữ nhật hình trịn cho phương thức có tính đa hình • Trong phương thức Main() o Nhập n hình khác (n nhập từ bàn phím) o Xuất thơng tin hình nhập o Tính xuất diện tích hình nhập Tính xuất diện tổng diện tích hình nhập Phương thức Main() hoạt động cho kết có dạng sau: Nhap so hinh n: Nhap hinh thu 1: Loai hinh (Neu hinh chu nhat nhap ‘C’, hinh tron nhap ‘T’): C Height: Width: Nhap hinh thu 2: Loai hinh (Neu hinh chu nhat nhap ‘C’, hinh tron nhap ‘T’): T Radius: Cac hinh da nhap: Hinh chu nhat: Height=3, Width=4 Hình tron: Radius=9 Dien tich hinh chu nhat: … Dien tich hinh tron: … Tong dien tich: … Trang 23 BUỔI ĐA HÌNH (2/2) MỤC TIÊU Sau sinh viên hồn thành yêu cầu buổi này, sinh viên có thể: Phân tích, thiết kế tốn đơn giản có tính đa hình Sử dụng lớp/phương thức có tính đa hình Bài Tính lương nhân viên Cơng ty phần mềm TinySoft (cạnh tranh với Microsoft) cần quản lý nhân viên Nhân viên cơng ty thuộc hai phận: Programmer Tester Thông tin nhân viên gồm: mã nhân viên, họ tên nhân viên Lương hàng tháng phận sau: • Programmer: Mỗi lập trình viên có lương hàng tháng riêng Nếu tháng số lỗi lập trình < 20 tăng thêm 10% lương • Tester: Mỗi nhân viên kiểm thử phần mềm mức lương hàng tháng, nhân viên nhận tiền overtime (gọi tắt OT: tiền làm qua đêm) Số tiền OT số OT nhân với 200.000 đồng Yêu cầu: Hãy viết chương trình nhập n nhân viên tính lương n nhân viên Bài Tính điểm thí sinh Phân tích, thiết kế thực theo hướng đối tượng chương trình tính điểm thi cho thí sinh thi tin học, thơng tin Cuộc thi: danh sách thí sinh Cuộc thi giành cho hai đối tượng thí sinh: Chuyên (giành cho thí sinh chưa có giải trước đây) Siêu cúp (giành cho thí sinh đoạt giải trước đây) Biết thí sinh phải làm thi lập trình, riêng đối tượng Chuyên làm thêm thi tiếng Anh (để cộng điểm thêm), đối tượng Siêu cúp phải làm thêm sở liệu (CSDL) Trang 25 • Thơng tin chung thí sinh: sbd (số báo danh), hoten (họ tên), bai1, bai2, bai3 (điểm 1, 2, 3), tongdiem (tổng điểm cuối thí sinh) • Thơng tin riêng cho đối tượng Chun: tiengAnh (điểm tiếng Anh) • Thơng tin riêng cho đối tượng Siêu cúp: csdl (điểm CSDL) Kết xét sau: • Thí sinh Chun: Tổng thi lập trình + điểm thưởng tiếng Anh xét sau: o 7≤tiengAnh≤8: cộng điểm o 9≤tiengAnh≤10: cộng điểm • Thí sinh Siêu cúp: Tổng điểm thi Yêu cầu: Viết chương trình nhập thơng tin thi xuất tổng điểm thi thí sinh Trang 26 BUỔI INTERFACE MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Định nghĩa (khai báo) interface Hiện thực (cài đặt) interface Sử dụng interface Bài Cơ Interface – Interface lớp Một sách (Book) chứa số thông tin: mã sách, tên sách, giá sách, giảm giá Khai báo interface IBook cho sách Trong interface IBook có: • Các properties sách • Phương thức tính giá sách Xây dựng lớp Book thực (cài đặt) interface IBook Chú ý: Phương thức tính giá bán sách tính sau: Giá bán sách = Giá sách – Giảm giá Bài Cơ Interface – Nhiều lớp thực interface thực tính đa hình Lớp Rectangle (hình chữ nhật) có: chiều rộng chiều cao Lớp Cirlce (hình trịn) có: bán kính • Xây dựng interface IShape có phương thức tính diện tích hình • Xây dựng lớp Rectange lớp Circle cài đặt interface IShape Trang 27 Bài Tính lương nhân viên Cơng ty phần mềm TinySoft cần quản lý nhân viên Nhân viên cơng ty thuộc hai phận: Programmer Tester Thông tin nhân viên gồm: mã nhân viên, họ tên nhân viên Lương hàng tháng phận sau: • Programmer: Mỗi lập trình viên có lương hàng tháng riêng Nếu tháng số lỗi lập trình < 20 tăng thêm 10% lương • Tester: Mỗi nhân viên kiểm thử phần mềm mức lương hàng tháng, nhân viên nhận tiền overtime (gọi tắt OT: tiền làm qua đêm) Số tiền OT số OT nhân với 200.000 đồng Yêu cầu: • Xây dựng interface chứa phương thức tính lương, lớp abstract chứa thông tin Programmer Tester • Xây dựng lớp Programmer, Tester • Hãy viết chương trình nhập n nhân viên tính lương n nhân viên Trang 28 BUỔI XỬ LÝ NGOẠI LỆ MỤC TIÊU Sau sinh viên hoàn thành yêu cầu buổi này, sinh viên có thể: Bắt exception Ném exception Hiểu Sử dụng số lớp exception có sẵn Một số lớp exception có sẵn: • NotImplementedException • IndexOutOfRangeException • InvalidCastException • FormatException • NotSupportedException • NullReferenceException • StackOverflowException • DivideByZeroException • ArgumentNullException • ArgumentOutOfRangeException Bài Valid lớp Person Định nghĩa lớp Person có fields: first name, last name, age Validate setters fields, ném exceptions tương ứng trường hợp nhập vào không hợp lệ Cụ thể: • first name, last name khơng thể null chuỗi empty (Dùng phương thức string.IsNullOrEmpty()) • age nằm [0 … 120] Trang 29 Bước 1: Xây dựng lớp Person file Person.cs Bước 2: Thêm Properties validate liệu Với property field firstName: Trang 30 Với property field age: Sinh viên tự làm: • Thêm property cho field lastName validate liệu • Trong constructor nên dùng Properties để khởi tạo fields (thay dùng fields trực tiếp) Bước 3: Test lớp Person Trong phương thức Main tạo số đối tượng Person để kiểm tra lớp Person hoạt động đắn không Trang 31 Bước 4: Thêm khối try … catch để bắt ngoại lệ Sinh viên tự làm: • Bắt ngoại lệ cho đối tượng p3, p4, p5 Bài Bắt ngoại lệ Viết chương trình đọc số ngun, sau tính in bậc hai số Nếu số nhập vào số âm in "Invalid number" Trong trường hợp nào, cuối in chữ "Good bye" Dùng try-catch-finally Trang 32 Bài Ném ngoại lệ Viết phương thức ReadNumber(int min, int max) nhập số nguyên đoạn [𝑚𝑖𝑛 … 𝑚𝑎𝑥] Nếu nhập số khơng hợp lệ chữ phương thức ném exception Dùng phương thức để viết chương trình nhập 10 số: 𝒂𝟏 , 𝒂𝟐 , … , 𝒂𝟏𝟎 , cho 𝟏 < 𝒂𝟏 < ⋯ < 𝒂𝟏𝟎 < 𝟏𝟎𝟎 Nếu người dùng nhập số không hợp lệ yêu cầu người dùng nhập lại Trang 33

Ngày đăng: 18/11/2020, 23:30

Mục lục

    BUỔI 1. LỚP VÀ ĐỐI TƯỢNG (1/3)

    BUỔI 2. LỚP VÀ ĐỐI TƯỢNG (2/3)

    BUỔI 3. LỚP VÀ ĐỐI TƯỢNG (3/3)

    BUỔI 9. XỬ LÝ NGOẠI LỆ