Mục lục chương I: ĐỐi tưỢng và LỚP



tải về 1.36 Mb.
trang4/28
Chuyển đổi dữ liệu21.12.2018
Kích1.36 Mb.
1   2   3   4   5   6   7   8   9   ...   28

Nạp chồng phương thức


Chồng phương thức là việc tạo ra nhiều phương thức trùng tên với nhau nhưng nhận các tham số khác nhau hay trả về dữ liệu khác nhau. Việc phân biệt các hàm này dựa vào dấu ấn:

+ Khác nhau các tham số: khác nhau về số lượng tham số

+ Khác nhau về kiểu dữ liệu của tham số, kiểu dữ liệu trả về của phương thức.

Khi nạp chồng một phương thức ta phải thay đổi kí hiệu (dấu ấn) của phương thức, số tham số hay kiểu dữ liệu của tham số hoặc có thể thay đổi cả về giá trị của các tham số. Khi đó thì thực chất không phải là nạp chồng phương thức mà đó là hai phương thức khác nhau có cùng tên nhưng khác nhau về kiểu giá trị trả về. Đó là một điều cần chú ý khi nạp chồng phương thức.

Khi gọi một phương thức có nạp chồng phương thức thì cần chú ý về số tham số, kiểu dữ liệu cho phù hợp với từng phương thức nếu không thì sẽ phát sinh lỗi khi biên dịch chương trình.

    1. Đóng gói dữ liệu thông qua các thuộc tính:


Đóng gói dữ liệu với thuộc tính thực chất là một quá trình ta lấy giá trị cho biến thành viên và thiết lập giá trị đó cho biến để nó được truy cập thông qua phương thức của lớp mà không qua đối tượng. Trong C# cung cấp khả năng khai báo hàm chung gọi là thuộc tính cho hàm getset


public string (tên thuộc tính)

{

get { //Lấy giá tri thuộc tính }

set { //Trả về giá trị cùng kiểu với thuộc tính đã khai báo}

}

+ Phương thức get trả về một đối tượng dữ liệu kiểu thuộc tính, phương thức này giống phương thức của đối tượng.

+ Phương thức set: thiết lập giá trị của thuộc tính, có kiểu trả về là void. Khi thiết lập một phương thức set phải dùng từ khóa value để tượng trưng cho đối được trao và được giữ bởi thuộc tính.

Lợi ích của việc gói ghém dữ liệu là che giấu thông tin mặc dù người sử dụng vẫn thao tác với thuộc tính.

Vài điểm cần chú ý khi định nghĩa một thuộc tính

+ Ta không khai báo tường minh các tham số trong thủ tục set..

+ Có thể chỉ xây dựng thuộc tính chỉ đọc hoặc chỉ viêt bằng cách bỏ đi một trong hai thủ tục trên.

+ Nếu ta muốn tạo một thuộc tính có public để đọc nhưng lại muốn hạn chế protected trong gán thì phải tạo thuộc tính chỉ đọc public sau đó tạo một hàm set() với truy cập protected ở bên ngoài thuộc tính đó.

+ C# cho phép bạn tạo một thuộc tính virtual hay abstract ( xem thêm kế thừa và đa hình) cú pháp như sau:

public abstract string (tên thuộc tính)

{

get;


set;

}

B.BÀI TẬP MẪU

    1. Xây dựng lớp

        Ví dụ 1:


Xây dựng lớp diem với các thuộc tính tung độ, hoành độ của điểm đó, phương thức đổi tọa độ giữa dương và âm, phương thức di chuyển theo một giá trị nhập vào từ bàn phím, phương thức hiện điểm lên màn hình.

a, Hướng dẫn:

+ các thuộc tính gồm có:

int x ; // tọa độ hoành độ

int y ; // tọa độ tung độ

+ các phương thức của lớp:

nhập thông tin

đổi tọa độ

phương thức move: di chuyển điểm

phương thức hien: hiện thông tin lên màn hình

b, Bài giải mẫu:


class Diem

{

public int x, y;

{

x = ox;


y = oy;

}

public void nhap()

{

Console.WriteLine("Nhap toa do cua diem:");



x = int.Parse(Console.ReadLine());

y = int.Parse(Console.ReadLine());

}

public void move(int dx, int dy)

{

x += dx;



y += dy;

}

public void chuyen()

{

x = -x;


y = -y;

}





public void hien()

{

Console.Write("toa do :(");



Console.Write("{0},{1}", x, y);

Console.WriteLine(")");

}

}


Trong ví dụ trên, chúng tôi chỉ ra cách khai báo một lớp thì cần phải khai báo tường minh các thuộc tính (thành phần dữ liệu), và cả các phương thức (cái mà một đối tượng của lớp có thể thi hành). Với một phương thức không có giá trị trả về thì khai báo có từ khóa void còn nếu có giá trị trả về thì phải khai báo có giá trị trả về.


        Ví dụ 2:


Xây dựng lớp stack để mô phỏng một stack bao gồm

  • Hàm khởi tạo số phần tử tối đa,

  • Phương thức isEmpty kiểm tra xem stack có rỗng không

  • Phương thức isFull kiểm tra xem stack có đầy không

  • Phương thức push và pop để thêm vào, lấy ra một phần tử

a, Hướng dẫn:

Các thuộc tính của lớp stack gồm có:

top: mô tả phần tử ở đầu stack

n: số phần tử tối đa của stack

Các phương thức của lớp gồm có:

public stack(): khởi tạo giá trị của stack với số phần tử tối đa

pubic bool empty(): trả về giá trị kiểu đúng sai khi stack rỗng hay không

public bool full(): trả về kiểu đúng sai khi stack đầy hay không đầy

public void push (int x):thêm một phần tử vào stack

public int pop(): Lấy ra một phần tử từ stack. Đây là hàm vì nó có trả ra giá trị, giá trị chính là phần tử mà ta vừa lấy ra được từ stack.

b, Bài giải mẫu:


using System;

namespace Stack

{

class Stack

{

private int top;

private int []s;

public bool empty()

{

return (top == -1);

}

public bool full()

{

return (top >= s.Length);

}

public Stack ()

{

s = new int[20];



top=-1;

}

public void push(int x)

{

if(!full())

{

top=top+1;



s[top]=x;

}

else

Console.Write("Stack tran");

}

public int pop()

{

if (empty())

{

Console.Write("Stack can");



return 0;

}

else



return s[top--];

}

}






    1. Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   ...   28


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©tieuluan.info 2019
được sử dụng cho việc quản lý

    Quê hương