Bài giảng Kỹ thuật lập trình: Chương 3 - ThS. Phạm Thanh An - Pdf 14

4/10/2012
1
Chương 3
Xây dựng lớp, đối tượng
ThS. Phạm Thanh An
Khoa Công nghệ thông tin
Đại học Ngân hàng Tp. Hồ Chí Minh
Nội dung trình bày
 Định nghĩa lớp.
 Tạo đối tượng.
 Sử dụng các thành viên static.
 Hủy đối tượng.
 Truyền tham số.
 Nạp chồng phương thức.
 Đóng gói dữ liệu với thuộc tính.
 Thuộc tính chỉ đọc.
Phát triển hệ thống OOP
 Chương trình được tạo thành bởi các đối
tượng.
 Mỗi đối tượng đảm nhận thực hiện một tập các
nhiệm vụ liên quan.
 Trong phát triển hệ thống, đối tượng là sự mô
tả một cái gì đó mà chúng ta muốn thao tác
trong hệ thống: là thực thể vật lý hoặc thực thể
khái niệm
 Đối tượng có các thuộc tính (property) và hành
vi (behaviors)
4/10/2012
2
Đối tượng
 Sinh viên:

Lớp (tt)
Tên
Địa chỉ
Điện thoại
Thanh
Quận 1
123-456
Bình
Quận 2
221-4728
Lan
Quận 9
117-2321
Khách hàng
Tên
Địa chỉ
Điện thoai
Lớp với đối tượng
Lớp Đối tượng
 Là khuôn mẫu
 Định nghĩa các thuộc
tính và hành động của
một đối tượng
 Được tạo ra khi thiết
kế
 Là một thể hiện của một
lớp, đối tượng tồn tại
trong bộ nhớ và có thời
gian tồn tại hữu hạn
(finite lifespan)

{ if ( sodutk < sotien) return false ;
else { sodutk = sodutk - tienrut; return true ; }
}
public float laysodu()
{ return sodutk ; }
}
Bổ từ truy cập (Access modifiers)
Bổ từ truy
cập
Giới hạn truy cập
public Không giới hạn. Những thành phần public có thể được dùng
bởi bất cứ các phương thức của lớp bất kỳ.
private Thành viên trong một lớp A được đánh dấu là private thì chỉ
có thể được truy cập bởi các phương thức của lớp A.
protected
Thành viên trong lớp A được đánh dấu là protected thì chỉ có
thể được truy cập các phương thức bên trong lớp A và những
phương thức của những lớp dẫn xuất từ lớp A .
4/10/2012
5
Bổ từ truy cập (Access modifiers)
Bổ từ truy
cập
Giới hạn truy cập
internal
Thành viên trong lớp A được đánh dấu là internal thì được
truy cập bởi những phương thức của bất cứ lớp nào trong
cùng khối hợp ngữ với A.
protected
internal

 Ví dụ:
 taikhoan tk1 = new taikhoan();
 hoặc taikhoan tk1 ; tk1 = new taikhoan();
 Truy cập đến thành phần
 <đối tượng>.<thành phần>
Ví dụ: lớp thời gian
using System;
public class ThoiGian
{
int Nam;
int Thang;
int Ngay; // Các thành viên private
int Gio;
int Phut;
int Giay;
public void ThoiGianHienHanh()
{
Console.WriteLine(“Hien thi thoi gian hien hanh”);
}
}
Ví dụ: lớp thời gian
public class Tester
{
static void Main()
{
ThoiGian t = new ThoiGian();
t.ThoiGianHienHanh();
}
}
4/10/2012

Phương thức thiết lập (tt)
 Nếu không định nghĩa phương thức thiết
lập, trình biên dịch sẽ cung cấp một
phương thức thiết lập mặc định.
 Phương thức thiết lập mặc định được
tạo ra cho một đối tượng sẽ không thực
hiện bất cứ hành động nào
 Các thành viên lớp được khởi tạo các
giá trị mặc định.
Giá trị mặc định kiểu dữ liệu cơ bản
Ví dụ:
class MyClass
{
string myMsg;
public MyClass (string msg)
{
myMsg = msg;
}
}
class MyApp
{
MyClass c;
public Main (string[] args)
{
c = new MyClass(); // Lỗi
}
}
4/10/2012
9
Ví dụ: lớp Time

static void Main( )
{
System.DateTime currentTime =System.DateTime.Now;
Time t = new Time( currentTime );
t.DisplayCurrentTime( );
}
}
} // end namespace
4/10/2012
10
Khởi tạo biến thành viên
 Các biến thành viên có thể được khởi
tạo trực tiếp khi khai báo trong quá trình
khởi tạo
private int Giay = 30; // Khởi tạo
Nạp chồng phương thức thiết lập
 Chúng ta có thể định nghĩa nhiều
phương thức thiết lập trong một lớp
 Với điều kiện
 Danh sách các tham số phải khác nhau
 Hoặc kiểu dữ liệu các các tham số phải
khác nhau.
Ví dụ
public class taikhoan
{
private float sodutk ;
private float gioihanrut;
public taikhoan( int sd)
{
sodutk = sd;

{
private int days;
public DaysInYear()
{
days = 365;
}
public DaysInYear(int day)
{
days = day;
}
public DaysInYear(String dayOne)
{
days =Convert.ToInt32(dayOne);
}
public void setDay(int newDays)
{
days = newDays;
}

}
Phương thức thiết lập sao chép
 Để thực hiện việc tạo một đối tượng mới bằng cách
sao chép tất cả các biến từ một đối tượng đã có và
cùng một kiểu dữ liệu.
public ThoiGian( ThoiGian tg)
{
Nam = tg.Nam;
Thang = tg.Thang;
Ngay = tg.Ngay;
Gio = tg.Gio;

(Nam) cùng tên với thành phần của lớp.
Từ khóa this (tt)
 Sử dụng tham chiếu this để gọi một phương thức nạp
chồng từ một phương thiết lập khác :
class myClass {
public myClass(int i)
{
}
public myClass( ) : this(42)
{
}
} // end class
4/10/2012
14
Từ khóa this (tt)
 Sử dụng this để gọi tường minh các
thành phần và phương thức trong lớp
public void MyMethod(int y)
{
int x = 0;
x = 7; // gán biến cục bộ
y = 8; // gán cho tham số
this.z = 5; // gán cho thành phần lớp
this.Draw( ); // gọi phương thức thành phần
}
Các thành viên tĩnh (static member)
 Những thuộc tính và phương thức trong một
lớp có thể là những thành viên thể hiện
(instance members) hay những thành viên tĩnh
(static members).

return ++currentCount;
}
}
4/10/2012
16
Ví dụ: thành viên tĩnh (tt)
class TestCounter
{
static void Main()
{
Counter.currentCount = 100;
Counter.IncrementCount();
System.Console.WriteLine("New count: {0}",
Counter.currentCount);
}
}
Các thành viên tĩnh (tt)
 Các thuộc tính tĩnh rất hữu ích khi chúng
ta muôn lưu trữ các trạng thái liên quan
đến tất cả thể hiện của lớp
 Phương thức tĩnh có tác dụng khi hành
vi là chung cho của lớp chứ không phải
một thể hiện cụ thể nào của lớp.
Ví dụ sử dụng các thuộc tính tĩnh
using System;
public class Cat
{
private static int instance =0;
public Cat()
{

 Các phương thức tĩnh không thể truy cập trực
tiếp đến các thành phần không tĩnh (nonstatic)
 Ví dụ với Main() để gọi một phương thức không tĩnh
(nonstatic), phải tạo ra một thể hiện lớp
Ví dụ:
using System;
public class Class1
{
public void SomeMethod(int p1, float p2)
{ Console.WriteLine(“Ham nhan duoc hai tham so: {0} va {1}”, p1,p2); }
}
public class Tester
{
static void Main()
{
int var1 = 5;
float var2 = 10.5f;
Class1 c = new Class1();
c.SomeMethod( var1, var2 );
}
}
4/10/2012
18
Phương thức thiết lập tĩnh
 Nếu một lớp khai báo một phương thức thiết lập
tĩnh (static constructor), thì phương thức thiết lập
tĩnh này sẽ được thực hiện trước bất cứ thể hiện
nào của lớp được tạo ra.
 Ghi chú:
 Không thể điều khiển chính xác khi nào thì phương

hiện.
4/10/2012
19
Phương thức thiết lập private
 Được sử dụng khi một lớp chỉ có các
thành phần tĩnh, và đối tượng của lớp
không cần tạo ra
Phương thức thiết lập private (tt)
 C# không có phương thức toàn cục và hằng số toàn
cục (đều phải khai báo trong 1 lớp).
 Sử dụng phương thức thiết lập private,khi cần tạo ra
những lớp tiện ích nhỏ chỉ để chứa các phương thức
tĩnh (lớp Math, Console)
 Lưu ý:
 Nếu một lớp có phương thức thiết lập private và
không có phương thức thiết lập public, thì tất cả
các lớp khác (ngoại trừ lớp lồng) không được phép
tạo ra thể hiện của lớp này.
Phương thức hủy (Destructors)
 Không nhận tham số
 Khai báo như phương thức thiết lập, có thêm ‘~’ vào
trước
 Được gọi bởi Garbage Collector trong C#
 Garbage Collector giải phóng bộ nhớ bằng cách hủy
những đối tượng không dùng nữa hoặc không tham
chiếu đến nữa
 Cú pháp:

~<Tên lớp>()
{

Từ khóa params
using System;
using System.Collections.Generic;
using System.Text;
namespace UsingParams
{
public class Tester
{
static void Main( )
{
Tester t = new Tester( );
t.DisplayVals(5,6,7,8);
int [ ] mang = new int[5] {1,2,3,4,5};
t.DisplayVals(mang);
}
Từ khóa params (tt)
public void DisplayVals(params int[] intVals)
{
foreach (int i in intVals)
{
Console.WriteLine("DisplayVals {0}",i);
}
}
} // kết thúc lớp
} // kết thúc namespcae
Quá tải phương thức (Overloading)
 Sử dụng cùng một tên cho các phương
thức
 Có hai cách quá tải phương tức
 Chỉ ra số các tham số khác nhau

int sum;
sum = Int32.Parse(value1) + Int32.Parse(value2);
Console.WriteLine ("Sum is {0}",sum);
Console.WriteLine ("Strings are converted to integers to add”);
}

Đóng gói dữ liệu với thuộc tính
 C# cung cấp khả năng bảo vệ các trường dữ
liệu trong một lớp, tránh truy cập trực tiếp
bằng cách đọc và ghi tới các trường này thông
qua Properties
 Properties được thiết kế nhắm vào hai mục
đích:
 Cung cấp một giao diện đơn cho phép truy cập các
biến thành viên.
 Tuy nhiên cách thức thực thi truy cập giống như
phương thức trong đó các dữ liệu được che dấu,
đảm bảo cho yêu cầu thiết kế hướng đối tượng
4/10/2012
24
Đóng gói dữ liệu với thuộc tính
public class Employee
{
private string fullName;
public string GetFullName()
{
return fullName;
}
public void SetFullName (string s)
{

set { fullName = value;}
}
}
Định nghĩa Property để
cho các chương trình
client truy cập
static void Main()
{
Employee p = new
Employee();
p.Name = “Tom”;
Console.WriteLine (p.Name);
}
4/10/2012
25
Đóng gói dữ liệu với thuộc tính
 Các kiểu thuộc tính
Read/Write
Read-Only
Write-Only
Read/Write Property
 Tồn tại cả hai khối get và set
Read-Only Property
 Chỉ tồn tại khối get
public class Employee
{
private string fullName;

// read-only Property for fullName
public string Name


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status