Khai báo lớp đối tượng

Một phần của tài liệu Lập trình ứng dụng WPF (Trung cấp CNTT) - Nguồn: BCTECH (Trang 92)

Để tạo được lớp đối tượng trong ngôn ngữ lập trình C# trên phần mềm ứng dụng lập trình Visual Studio chúng ta cần thực hiện các việc sau:

Hình 8.1. Màn hình để chọn thêm một lớp mới vào Project

Hình 8.2. Màn hình đặt tên cho lớp đối tượng

Cú pháp, ví dụ khai báo lớp

Khi giải quyết các vấn đề thực tiễn, các vấn đề cần giải quyết bạn cần tìm cách trừu tượng hóa nó thành vấn đề tổng quát, như nó có các đặc tính gì, ứng xử của nó ra sao ... Từ đó mới có thể định nghĩa ra lớp để hiện thực hóa vấn đề trừu tượng được.

Cú pháp cơ bản như sau:

<Access Modifiers> class Class_Name

{

// khai báo các thành viên dữ liệu (thuộc tính – biêấn)

// khai báo các thành viên hàm (phưởng thức)

}

Trong đó Access Modifiers có thể là các từ khóa sau:

Bảng 8.1. Bảng mô tả các từ khóa định nghĩa lớp

Từ khóa Giải thích

Public Truy xuất mọi nơi

Protected Truy xuất trong nội bộ lớp hoặc trong các lớp con

Internal Truy xuất trong nội bộ chương trình (Assembly)

protected internal Truy xuất nội trong chương trình (assembly) và

trong các lớp con

private (mặc định) Chỉ được truy xuất trong nội bộ lớp

Ví dụ: Khai báo một lớp có tên là Box gồm các thuộc tính: chiều dài, chiều rộng, chiều cao.

Khai báo và khởi tạo thành viên thuộc tính (biến) tương tự cách khai báo biến thông thường nhưng có sử dụng thêm Access Modifiers để quy định cấp độ truy cập.

Câu hỏi ôn tập và bài tập

1. Tạo lớp đối tượng sinh viên bao gồm các thông tin: masv (mã sinh viên), tennv (tên sinh viên), ngaysinh (ngày sinh), diachi (địa chỉ)

2. Tạo lớp đối tượng đồng hồ bao gồm các thông tin: thoigian, gio, phut, giay. 3. Tạo lớp đối tượng sản phẩm bao gồm các thông tin: masp (mã sản phẩm), tensp (tên sản phẩm), gia (giá), ngaynhap (ngày nhập), ngayxuat (ngày xuất).

BÀI 9 : ĐỊNH NGHĨA CÁC THUỘC TÍNH, PHƯƠNG THỨC HÀNH ĐỘNG CHO LỚP ĐỐI TƯỢNG

Mã bài: 20.9 Giới thiệu:

Việc xác định thuộc tính của lớp đối tượng cũng như chuẩn bị sẵn các phương thức hoạt động cho lớp đối tượng giúp cho việc sử dụng và lập trình dễ dàng hơn rất nhiều.

Mục tiêu:

- Định nghĩa được các thuộc tính cho lớp đối tượng.

- Định nghĩa được các phương thức hành động cho lớp đối tượng - Vận dụng các thuộc tính, phương thức của lớp đối tượng trong đồ án - Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm.

Nội dung chính:

8. Định nghĩa các thuộc tính cho lớp đối tượng

Ví dụ:

- Định nghĩa lớp đối tượng Box gồm các thuộc tính chieudai, chieurong, chieucao.

- Kiểu dữ liệu cho mỗi thuộc tính tùy theo mục đích sử dụng mà chọn kiểu dữ liệu.

Trong màn hình lập trình trên để khai báo và sử dụng lớp đối tượng Box trong chương trình Main ta sử dụng câu lệnh sau:

Từ khóa this

Từ khóa this dùng trong các phương thức của lớp, nó tham chiếu đến đối tượng hiện tại sinh ra từ lớp. Sử dụng this để tường minh, tránh sự không rõ ràng khi truy cập thuộc tính, phương thức hoặc để lấy đối tượng lớp làm tham số cho các thành phần khác ...

Ví dụ, hàm setchieucao, có thể viết: public void setchieucao(int chieucao) {

this.chieucao = chieucao ;

}

Nếu viết thiếu this thì là chieucao = chieucao , làm cho khó hiểu không biết là gán chieucao từ tham số hàm cho chieucao là dữ liệu của lớp.

2. Định nghĩa các phương thức hành động cho lớp đối tượng

Phương thức khởi tạo – Constructor

Phương thức khởi tạo là phương thức của lớp, nó được thi hành ngay khi đối tượng được tạo (bởi toán tử new), phương thức khởi tạo có tên trùng với tên của lớp, không có kiểu trả về.

Nếu khai báo vào khởi tạo giống như ở trên chương trình sẽ báo lỗi vì khi tạo đối tượng Box mới cần gán các giá trị ban đầu cho đối tượng: chiều dài, chiều rộng, chiều cao.

Lúc này có thể sử như sau:

Kết quả tương tự như ví dụ trên, việc sử dụng hàm khởi tạo đảm bảo dữ liệu của đối tượng bắt buộc phải khởi tạo ngay khi đối tượng đó được tạo – tránh việc sử dụng đối tượng mà dữ liệu không chính xác.

Phương thức Destructor trong C#

Một destructor trong C#, là một hàm thành viên đặc biệt của một lớp, được thực thi bất cứ khi nào một đối tượng của lớp đó thoát ra khởi phạm vi. Một destructor có tên giống tên lớp với một dẫu ngã (~) ở trước và nó có thể: không trả về một giá trị hoặc không nhận bất kỳ tham số nào.

Destructor trong C# có thể rất hữu ích để giải phóng tài nguyên bộ nhớ trước khi thoát khỏi chương trình. Destructor không thể bị kế thừa hoặc nạp chồng.

Chương trình được viết trong Program.cs

Kết quả thực hiện chương trình

Hình 9.1. Kết quả gọi class Box và truyền tham số

Kỹ thuật quá tải phương thức (Method Overloading) là cách thức triển khai khái niệm tính đa hình của lập trình hướng đối tượng. Quá tải phương thức là các phương thức có cùng tên nhưng tham số khác nhau (hàm có thể trả về kiểu dữ liệu khác nhau)

Tính đa hình (polymorphism) là cách ứng xử của đối tượng - ứng xử này là

khác nhau tùy thuộc vào tình huống cụ thể. Public static void WriteLine();

public static void WriteLine(bool value);

public static void WriteLine(decimal value);

public static void WriteLine(int value); ...

Điều này giúp cho bạn khi bạn gọi Console.Writeline(a), tùy thuộc vào kiểu dữ liệu của a mà một hàm WriteLine tương ứng được thi hành.

Ví dụ:

public class OverloadingExample {

public static int Sum(int a, int b)

{

return a + b;

}

public static double Sum(double a, double b)

{

return a + b;

}

}

Lớp trên có hàm Sum quá tải, tùy thuộc vào kiểu tham số mà hàm Sum cụ thể được gọi.

double a = 1;

double b = 2;

var c = OverloadingExample.Sum(a, b); // c = 3 có kiêỉu double int a = 1;

int b = 2;

var c = OverloadingExample.Sum(a, b); // c = 3 nhưng có kiêỉu int

Chú ý: Khai báo hai hàm cùng tên, giống nhau hoàn toàn về tham số chỉ khác kiểu trả về sẽ gây lỗi.

Tính đóng gói lập trình hướng đối tượng

Tính đóng gói mục đích hạn chế tối đa việc can thiệp trực tiếp vào dữ liệu, hoặc thi hành các tác vụ nội bổ của đối tượng. Nói cách khác, một đối tượng là hộp đen đối với các thành phần bên ngoài, nó chỉ cho phép bên ngoài tương tác với nó ở một số phương thức, thuộc tính, trường dữ liệu nhất định – hạn chế.

C# triển khai tính đóng gói này chính là sử dụng các Access Modifiers: public

private protected internal khi khai báo lớp, phương thức, thuộc tính, trường dữ liệu (biến).

Ví dụ:

class Student

{

private string Name;

}

Khi sử dụng

var s = new Student();

s.Name = “ABC”;

Biên dịch sẽ lỗi error CS0122: ‘Student.Name’ is inaccessible due to its protection level. Vì trường Name là private không thể truy cập bằng code bên ngoài lớp như trên. Nhưng nếu thay bằng public thì không lỗi.

Khi lập trình cố gắng tối đa ẩn thông tin ra bên ngoài lớp càng nhiều càng tốt để đảm bảo tính đóng gói của kỹ thuật lập trình OOP, nó giúp cho code dễ bảo trì và giám sát lỗi.

Câu hỏi ôn tập và bài tập

1. Lớp đối tượng sinh viên bao gồm các thông tin: masv (mã sinh viên), tennv (tên sinh viên), ngaysinh (ngày sinh), diachi (địa chỉ), diemtoan (điểm toán), diemvan (điểm văn). Viết các phương thức phù hợp cho lớp để gán thông tin, tính điểm trung bình.

2. Lớp đối tượng đồng hồ bao gồm các thông tin: thoigian, gio, phut, giay. Viết phương thức đổi ra giây của dữ liệu được nhập vào

3. Lớp đối tượng sản phẩm bao gồm các thông tin: masp (mã sản phẩm), tensp (tên sản phẩm), gia (giá), ngaynhap (ngày nhập), ngayxuat (ngày xuất). Viết phương thức kiểm tra dữ liệu nhập: ngày xuất phải sau ngày nhập.

BÀI 10: SỬ DỤNG FORM, MENUSTRIP

Mã bài: 20.10 Giới thiệu:

Form và Menustrip là 2 đối tượng cơ bản và cần thiết khi lập trình ứng dụng bằng Windows Form. Bản thân Form được tạo đầu tiên khi chương trình được chạy, Menustrip là điều khiển có mặt ở hầu hết các chương trình ứng dụng thực tế.

Mục tiêu:

- Hiểu và vận dụng Form cho đồ án - Hiểu và vận dụng MenuStrip cho đồ án

- Rèn luyện tính cẩn thận, tự giác, sáng tạo, làm việc nhóm.

Nội dung chính: 9. Form

Form : đối tượng cửa sổ của chương trình chứa các đối tượng khác

Hình 10.1. Lựa chọn tạo mới 1 project

Hình 10.2. Màn hình lựa chọn khi tạo mới project

Hình 10.3. Màn hình quản lý các điều khiển trong Form

Chọn nơi lưu Chọn ứng dựng Windows Forms Chọn ngôn ngữ Thuộc tích của điều khiển Quản lý dự án

Form – biểu mẫu chính Các điều khiển

Để ẩn/hiện các đối tượng trên màn hình làm việc vào View  ToolBox/ Properties/…

Hình 10.4. Lựa chọn hiển thị cho các cửa sổ con

Danh mục các điều khiển

10.Thuộc tính của Form

Bảng 10.1. Bảng mô tả thuộc tính Form

Thuộc tính Mô tả

Name Đặt tên form

AcceptButton

Giá trị thuộc tính này nhận là tên của một button trên form. Khi đó thay vì nhấp chuột vào button để thực thi thì người dùng có thể ấn phím Enter trên bàn phím

Backcolor Thiết lập màu nền của form

BackgroundImage Thiết lập hình nền cho form

BackgroundImageLayou t

Thiết lập việc hiển thị hình vừa thêm trong thuộc tính BackgroundImage sẽ hiển thị trên form ở dạng: bình thường (None), giữa (Center), …

CancelButton

Giá trị thuộc tính này nhận là tên của một button trên form. Khi đó thay vì nhấp chuột vào button để thực thi thì người dùng có thể ấn phím Escape trên bàn phím

ControlBox

Mang giá trị true hoặc false. Nếu thiết lập thuộc tính là false thì sẽ loại bỏ các nút minimize và nút maximize trên form

Cusor Thiết lập hình dạng con trỏ khi di chuyển

con trỏ vào form

Enable

Mang giá trị true hoặc false; Nếu thiết lập thuộc tính là false thì điều khiển trong form sẽ không cho phép người dùng thao tác.

Font Thiết lập văn bản hiển thị trên điều khiển

ForeColor Thiết lập màu mặc định cho chuỗi của các

điều khiển trên form

FormBorderStyle Thiết lập đường viền của form và hành vi

của form khi chạy chương trình

HelpButton

Mang giá trị true hoặc false; Nếu thiết lập thuộc tính là true thì trên thanh titlebar sẽ hiện 1 nút có dấu ? (nút này chỉ hiện khi hai thuộc tính MinimizeBox và MaximizeBox được thiết lập là false)

Icon Biểu tượng hiển thị bên trái trên thanh

titlebar của form

thuộc tính là true cho phép các sự kiện bàn phím của form có hiệu lực

Location

Khi thuộc tính StartPosition được thiết lập là Manual, thì thuộc tính Location có tác dụng thiết lập vị trí hiển thị của form trên màn hình

MaximizeBox

Mang giá trị true hoặc false: nếu thiết lập thuộc tính là false thì nút maximize form trên thanh titlebar sẽ mất đi

MaximumSize Thiết lập kích thước lớn nhất của form

(chiều rộng x chiều cao)

MinimizeBox

Mang giá trị true hoặc false: nếu thiết lập thuộc tính là false thì nút minimize form trên thanh titlebar sẽ mất đi

MinimumSize Thiết lập kích thước nhỏ nhất của form

(chiều rộng x chiều cao)

Opacity Thiết lập độ trong suốt cho form

Size Kích thước form

StartPosition Vị trí hiển thị của form trên màn hình

Text Chuỗi văn bản hiển thị trên titlebar của

form

Visible

Mang giá trị true hoặc false: nếu thiết lập thuộc tính là true thì form sẽ được hiển thị trên màn hình, nếu là false sẽ không hiển thị trên màn hình

WindowState

Có 3 giá trị: Normal: hiển thị form bình thường; Minimized: khi chạy chương trình form sẽ bị thu nhỏ dưới thanh taskbar; Maximized: form hiển thị có kích thước đầy màn hình

IsMDIContainer

Mang giá trị True hoặc False. - Nếu là True: Form ở dạng MDI Form - Nếu là False: Form ở dạng bình thường

MdiParent

Cài đặt giá trị là đối tượng MDI Form. Khi thiết lập giá trị cho thuộc tính MdiParent thì form sẽ trở thành Child Form

Bảng 10.2. Bảng mô tả các giá trị của FormStartPosition

Giá trị Mô tả

Manual

Nếu StartPosition mang giá trị Manual thì vị trí form hiển thị sẽ là vị trí thiết lập tại thuộc tính

Size.

WindowsDefaultLocatio n

Form hiển thị tại vị trí mặc định với kích thước form sẽ là kích thước form được thiết lập tại thuộc

tính Size

WindowsDefaultBounds Form hiển thị tại vị trí mặc định với kích thước form sẽ là kích thước mặc định

CenterParent Form hiển thị ở vị trí giữa form cha Hiển thị Form1 ở vị trí giữa màn hình

Form1.StartPosition =

FormStartPosition.WindowsDefaultLocation;

Hình 10.6. Màn hình lập trình để cài đặt Form chạy đầu tiên

Dòng lệnh trên chỉ ra rằng form đầu tiên sẽ hiển thị là form1. Do đó, lập trình viên chỉ cần sữa lại mã lệnh chỉ định một form khác muốn hiển thị bằng cách thay tên form đó cho form1

Ví dụ 1 : Hiển thị form có tên Form2 trong dự án Application.Run(new Form2());

Ví dụ 2: Viết chương trình hiển thị form cho trong sự kiện Form_load(): Nhập tên Form để được

chạy đầu tiên. Thay đổi từng form

Lớp program mặc định để chạy chương trình

Nhấn Ctrl + Shift + B để biên dịch mã nguồn và nhấn F5 để thực thi chương trình sẽ được Mdi Form và Child Form.

Kết quả chương trình

Hình 10.7. Kết quả chương trình form cha – con

Kết quả chương trình

Hình 10.8. Kết quả chương trình form dạng hình ellipse

b. Sự kiện của Form

Sự kiện của form hay có thể gọi là các hành động liên quan đến form. Ứng dụng Windows Forms được hỗ trợ nhiều sự kiện và các đoạn mã tạo ra các sự kiện đều được sinh ra một cách tự động. Để sử dụng các sự kiện của form cần thực hiện các thao tác sau:

Bước 1: Nhấp chuột trái vào form

Bước 2: Trên cửa sổ Properties tương ứng, nhấp chuột trái vào biểu tượng để mở hộp thoại các sự kiện.

Bước 3: Hộp thoại chứa nhiều sự kiện liên quan đến form như: đóng form, mở form, di chuyển chuột vào form.

Bảng 10.3. Bảng mô tả các sự kiện của form

Sự kiện Mô tả

AutoSizeChanged Xảy ra khi thuộc tính Autosize của Form chuyển từ

True sang False hay ngược lại là False sang True

BackColorChange

d Xảy ra khi thuộc tính BackColor của Form thay đổi Click Xảy ra khi người dùng Click chuột vào vùng làm

việc thuộc Form

ControlAdded Xảy ra khi một điều khiển được Add vào Form

ControlRemoved Xảy ra khi một điều khiển bị xóa khỏi Form

CursorChanged Xảy ra khi thuộc tính Cursor của Form thay đổi

DoubleClick Xảy ra khi người dùng DoubleClick vào vùng làm

việc của Form

FontChanged Xảy ra khi thuộc tính Font của Form có sự thay đổi

ForeColorChanged Xảy ra khi thuộc tính ForeColor của Form có sự thay

đổi

FormClosed Xảy ra khi Form đã đóng (Nhấn vào nút X màu đỏ

trên titlebar)

FormClosing

Xảy ra khi Form đang đóng (2 sự kiện FormClosed và FormClosing thường dùng trong lập trình CSDL: khi xảy ra sự kiện này thì đóng kết nối CSDL)

KeyDown Xảy ra khi người dùng nhấn một phím hay một tố

hợp phím

KeyPress Xảy ra khi người dùng nhấn một phím

KeyUp Xảy ra khi người dùng nhả một phím

MouseClick Xảy ra khi người dùng nhấn chuột (một trong 3 lựa

chọn: Trái, giữa, phải)

MouseDoubleClick

Xảy ra khi người dùng nhấp đúp chuột vào một vùng làm việc của Form (một trong 3 lựa chọn: Trái, giữa, phải)

MouseDown Xảy ra khi người dùng nhấn chuột

MouseHover Xảy ra khi người dùng di chuyển vào các vùng làm việc Form

MouseLeave Xảy ra khi di chuyển chuột ra khỏi vùng làm việc của Form

MouseMove Xảy ra khi di chuyển chuột trên một vùng làm việc thuộc Form (nếu Form có chứa một điều khiển nào đó, khi di chuyển chuột trên điều khiển này thì không

xảy ra sự kiện MouseMove của Form)

MouseUp Xảy ra khi người dùng nhả nhấn chuột (có thể là

chuột trái, chuột phải, chuột giữa – chuột cuộn)

Move Xảy ra khi di chuyển Form (có sự thay đổi vị trí

Một phần của tài liệu Lập trình ứng dụng WPF (Trung cấp CNTT) - Nguồn: BCTECH (Trang 92)

Tải bản đầy đủ (DOCX)

(169 trang)
w