1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng ngôn ngữ C#: Bài 3 - Chử Đức Hoàng

34 1 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 34
Dung lượng 1,26 MB

Nội dung

Bài giảng ngôn ngữ C# - Bài 3: Hướng đối tượng trong C# được nhằm cung cấp đến người học khái niệm về lập trình hướng đối tượng; giới thiệu về lập trình hướng đối tượng trong C#; mô tả lớp và tạo đối tượng trong C#; lập trình ứng dụng Console với C#.

Bài HƯỚNG ĐỐI TƯỢNG TRONG C# GV Chử Đức Hồng TÌNH HUỐNG DẪN NHẬP • Những yếu tố chứa thông tin liên quan đến học viên trường đại học quốc gia phân tích trước đưa để quản lý đối tượng thực học viên Người lập trình có trách nhiệm làm cho máy tính liên kết thơng tin với đối tượng giới thực • Tuy nhiên, máy tính cỗ máy, thực cơng việc lập trình, người lập trình phải cung cấp cho máy tính thơng tin theo cách thức mà nhận thức đối tượng nhận thức  Vậy ngơn ngữ lập trình C# làm để thể thực công việc quản lý đối tượng thực tế máy tính? MỤC TIÊU Trình bày lập trình hướng đối tượng Lập trình hướng đối tượng C# Trình bày cách gọi khai báo lớp, đối tượng phương thức C# Xây dựng chương trình C# thể lớp thuộc tính Tạo đối tượng sử dụng đối tượng NỘI DUNG Khái niệm lập trình hướng đối tượng Giới thiệu lập trình hướng đối tượng C# Mô tả lớp tạo đối tượng C# Lập trình ứng dụng Console với C# 1.1 MỞ ĐẦU - TRÌNH BÀY VỀ PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG • Lập trình hướng đối tượng phương pháp lập trình lấy đối tượng làm tảng để xây dựng thuật toán, xây dựng chương trình • Có tương xứng đối tượng chương trình đối tượng thực tế có hướng tiếp cận đa dạng • Đối tượng phần mềm thông thường kết hợp mã lệnh liệu thể thống 1.1.1 CÁC ĐẶC TÍNH CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG • • • • Tính bao gói: Khả truy suất vào thành phần đối tượng đảm bảo che giấu đặc tính riêng tư bên đối tượng gọi tính bao gói Tính kế thừa: Tính kế thừa cho phép đối tượng chia sẻ hay mở rộng thuộc tính phương thức mà khơng phải tiến hành định nghĩa lại Tính trừu tượng: Một đặc tả trừu tượng cho ta biết đối tượng làm mà khơng bận tâm vào việc làm Tính đa hình: Tính đa hình thể với phương thức có cách ứng xử khác lớp giao diện 1.1.2 ƯU ĐIỂM CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG • Khả tái sử dụng cao • Ổn định dễ bảo trì • Chi phí giảm dần • Tăng suất lập trình • Tăng chất lượng phần mềm • Tăng tính dễ hiểu phần mềm • Vịng đời phần mềm tăng 1.1.3 LỚP • Lớp khái niệm dùng để mơ tả nhóm đối tượng có thuộc tính, hành vi mối quan hệ thông thường tương tự • Thuật ngữ lớp hiểu “lớp đối tượng (class)” khuôn mẫu để sinh đối tượng, đối tượng coi “thể hiện” lớp với giá trị thuộc tính cách thức hoạt động đặc trưng • Trong C# hỗ trợ đơn thừa kế lớp lớp bắt buộc phải thừa kế từ lớp 1.1.3 LỚP Sơ đồ mơ tả lớp Sơ đồ lớp mô tả đặc điểm khái quát lớp bao gồm: Tên lớp, thuộc tính phương thức Sinhvien Tensv: string Sohieusv:int Diemtoan:int Diemly:int Diemhoa:int Diemtb:float Nhap():void Inthongtin():void Tinhtb(): float Tên lớp Thuộc tính Phương thức 1.1.4 ĐỐI TƯỢNG • Đối tượng thể (instance) lớp • Mỗi đối tượng có:  Định danh;  Thuộc tính (dữ liệu);  Hành vi (phương thức) Đối tượng sinh viên có: Định danh: Sinh viên Thuộc tính: tên, tuổi, số hiệu sinh viên, điểm thi,… Hành vi: hàm tạo, nhập liệu sinh viên, tính điểm cho sinh viên,… 10 1.4 HÀM TẠO Sử dụng đối tượng • Sau khai báo đối tượng thuộc lớp sinhvien thơng qua đối tượng này, ta truy xuất vào thành phần phương thức thuộc tính đối tượng vừa tạo • Ví dụ: muốn thực phương thức nhap() đối tượng thuộc lớp sinhvien ta khai báo sử dụng thông qua đối tượng tham chiếu SV1 52 Sinhvien SV1 = new Sinhvien(); 53 SV1.nhap(); 54 SV1.ten=“Nguyễn Thị Na”; 55 SV1.diemtoan = 8; 56 SV1.diemly = 7; 57 SV1.diemhoa =10; 58 Diemtong = SV1.tinhtong(); 20 1.5 HÀM HỦY - DESTRUCTOR • Cú pháp khai báo hàm hủy ngôn ngữ C# sau: ~Class1() {} • Thực nhiệm vụ xố đối tượng 59.class sinhvien 60.{ 61 // 62 ~sinhvien(); 63 { 64 //…… 65 } 66.} Đặc điểm hàm huỷ • Tên hàm huỷ trùng với tên lớp có tiền tố dấu sóng(~); • Khơng có kiểu trả về; • Khơng có tham số truyền; • Khơng có bổ từ; • Hàm huỷ gọi tự động đối tượng bị thu gom rác; • Một lớp có hàm huỷ 21 1.6 PHÂN BIỆT ĐỐI TƯỢNG VÀ LỚP • Lớp  Là đặc tả chi tiết đối tượng (còn gọi mẫu -blueprint)  Một lớp cho phép tạo nhiều đối tượng • Đối tượng  Là thể lớp với đặc điểm, chức cụ thể;  Các đối tượng từ lớp có cấu trúc chức mô tả lớp 22 1.6 PHÂN BIỆT ĐỐI TƯỢNG VÀ LỚP Mối tương quan đối tượng thực tế đối tượng phần mềm Khái niệm Lớp Đối tượng Phần mềm Thực tế Là mẫu, mô tả đối tượng Là thể lớp với đặc điểm, chức cụ thể 67 public class Car { 68 private int price; 69 private String color; 70 } Car myCar=new Car(); Car yourCar=new Car(); Sinhvien Thuộc tính Phương thức Dữ liệu lớp Thể hành vi lớp Tên: SohieuSV: Nguyễn X 12345 71 SV.nhap(); 72 SV.inthongtin(); 73 tinhtb(); 23 1.6 PHÂN BIỆT ĐỐI TƯỢNG VÀ LỚP (tiếp theo) Các thành phần lớp đối tượng • Lớp đối tượng • Con trỏ this • Phương thức • Nạp chồng phương thức • Phương thức ảo • Sử dụng property 24 1.6 PHÂN BIỆT ĐỐI TƯỢNG VÀ LỚP (tiếp theo) Lớp đối tượng • Nếu khai báo lớp mà khơng rõ lớp có thừa kế từ lớp khác trình biên dịch tự động hiểu lớp thừa kế từ lớp Object • Một số phương thức định nghĩa lớp Object là:  ToString()  GetHashTable()  Equals(object objA, object objB)  ReferenceEquals(object objA, object objB)  GetType()  MemberwiseClone()  Finalize() 25 1.6 PHÂN BIỆT ĐỐI TƯỢNG VÀ LỚP (tiếp theo) Con trỏ “this” • “this” dùng để tham chiếu đến thể hiện hành đối tượng “this” xem trỏ ẩn đến tất phương thức khơng có thuộc tính tĩnh lớp Mỗi phương thức tham chiếu đến phương thức khác biến thành viên thông qua “this” • “this” sử dụng ba trường hợp:  Sử dụng biến thành viên bị che lấp tham số đưa vào: 74 public void tinhtb( int diemtb) 75 { 76 this.diemtb = diemtb; 77 }  Sử dụng this để truyền đối tượng hành vào tham số phương thức đối tượng khác 78 public void tinhtb( OtherClass otherObject ) 79 { 80 // Sử dụng this để truyền tham số thân đối tượng thực 81 otherObject.SetObject( this ); 82 }  Sử dụng tham chiếu this mảng mục (indexer) 26 1.7 PHƯƠNG THỨC • Là hàm hay thủ tục khai báo lớp • Hành vi giao tiếp với bên ngoài: Static non static 83 public class sinhvien 84 { 85 public sinhvien ( ) { } 86 public static void StaticMethod( ) { } 87 public void NonStaticMethod( ) { } 88 } 89 public class Tester() { 90 sinhvien sv = new sinhvien( ); 91 sv.NonStaticMethod( ); Truy cập qua thể hiện: sv 92 sinhvien.StaticMethod( ); 93 } Truy cập qua tên lớp: sinhvien 27 1.7 PHƯƠNG THỨC Khai báo phương thức 94.namespace QuanLySV 95.{ 96 class sinhvien Kiểu trả 97 { 98 // Phần khai báo Đối số2 105 106.} Tên Đối số1 public static double tinhdiemtb( double diem1, double diem2) { double kq = (diem1+diem2)/2; return kq; }} Câu lệnh trả kết 99 100 101 102 103 104 Các câu lệnh 28 1.7 PHƯƠNG THỨC Nạp chồng phương thức • Ngơn ngữ C# cho phép lớp xây dựng nhiều phương thức tên, giá trị trả nhận tham số khác Chức gọi nạp chồng phương thức • Một lớp khơng thể có hai phương thức giống tên tham số 107.void tinhtong( int diemtoan ); 108.void tinhtong( int diemtoan, int diemly ); 109.void tinhtong( int diemtoan, int diemly , int diemhoa); 29 1.7 PHƯƠNG THỨC (tiếp theo) Phương thức ảo • Phương thức ảo:  Khai báo từ khoá virtual  Cho phép lớp thay • Đây thực thi tính đa hình  Một phương thức lớp sở (lớp cha) thực thi khác lớp dẫn xuất (lớp con)  Lớp sinhvien1 phủ lại cách tính điểm trung bình lớp sinhvien 110 class sinhvien 111.{ 112 // 113 public virtual float TinhDiemTrungBinh() 114 { 115 float kq = (diemtoan + diemly) / 2; 116 return kq; 117 } 118.} 119.class sinhvien1:sinhvien 120.{ 121 // 122 public override double TinhDiemTrungBinh() 123 { 124 double kq = (diemtoan * + diemtoan) / 3; 125 return kq; 126 } 127.} 30 1.7 PHƯƠNG THỨC (tiếp theo) Đóng gói liệu với property • C# cung cấp khai báo hàm chung gọi property cho hàm get/set để thay cho cách dùng truyền thống Geter/seter • Property có khác biệt so với phương thức thành viên:  Khơng có tham số  Khơng có cặp ngoặc  Thân có hai từ khoá “get” để lấy “set” để đặt giá trị cho property  Trong thân “set” có biến mặc định “value” mang kiểu khai báo property value nhận giá trị gán cho property 31 1.7 PHƯƠNG THỨC (tiếp theo) Cài đặt property 128.class sinhvien 129.{ 130 protected double diemthi=0; 131 //… 132 public double diemthi { 133 get { 134 return diemthi; 135 } 136 set { 137 if (0

Ngày đăng: 07/05/2021, 13:25