Xem mẫu
- CHƯƠNG 3: Lớp và đối tượng
- Nội dung chính
Định nghĩa lớp
Tạo đối tượng
Sử dụng các thành viên tĩnh
Truyền tham số
Hàm dựng và nạp chồng phương thức
Đóng gói dữ liệu với property
- 1. Định nghĩa lớp
Lớp trong C# cho phép người lập trình tự định nghĩa
các kiểu dữ liệu phức tạp (user-defined types) và
được sử dụng tương tự như kiểu dữ liệu có sẵn
(built-in data types).
Lớp thường được sử dụng để định nghĩa các vấn đề
trừu tượng như: ngày tháng, vector …
Lớp cho phép tách rời phần cài đặt (implementation)
và phần giao diện (interface).
- 1.Định nghĩa lớp (tt)
Mộtlớp có chứa dữ liệu (member data) và
hàm (member function).
Class
data1
data2
data3
functiona()
functionb()
functionc()
- Ví dụ
class Employee // khai báo tên lớp
{
// từ khóa cho biết không thể truy nh ập t ừ ngoài l ớp
private int EmpID ; // member data
private char EmpName[30];
private float EmpSalary;
// từ khóa cho biết có thể truy nhập từ ngoài l ớp
public void AddEmployee(); // member function
};
- Bổ từ truy xuất
Từ khoá 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
private (mặc định) Chỉ được truy xuất trong nội bộ lớp
- Ví dụ
using System;
public class Time
{
// phương thức public
public void DisplayCurrentTime()
{
Console.WriteLine("stub for DisplayCurrentTime");
}
// các biến private
private int Year; int Month; int Date;
public int Hour,Minute, Second;
}
public class Tester
{
static void Main()
{
Time t = new Time();
t.DisplayCurrentTime();
}
}
- Điều khiển truy nhập
Phần được khai báo với từ khóa
Class private chỉ được truy nhập bởi các
private hàm thành phần của cùng class
data1
data2
functiond()
Phần được khai báo với từ khóa
public
public có thể được truy nhập tại
functiona() bất kỳ nơi nào trong chương trình
functionb()
functionc()
- 2.Tạo đối tượng
Cú pháp khai báo đối tượng và cấp phát vùng nhớ cho đối tượng:
TênLớp TênBiếnĐốiTượng;
TênBiếnĐốiTượng = new TênLớp(DanhSáchĐốiSố);
hoặc
TênLớp TênBiếnĐốiTượng = new TênLớp(DanhSáchĐốiSố);
Chú ý:
• Sau khi khai báo biến đối tượng thì biến đó chỉ là một con trỏ.
• Sau khi cấp phát bắng từ khóa new thì biến trỏ tới một đối tượng
thực sự.
- 2.Tạo đối tượng
Ví dụ: public void Xuat()
Chương trình nhập chiều dài, chiều rộng của hình chữ nhật và xuất ra di ện {
tích, chu vi của hình chữ nhật.
Console.WriteLine("Hinh chu nhat: Dai = {0},
using System;
Rong = {1}", Dai, Rong);
namespace LopDoiTuongHCN
}
{
}
class HCN
class Application
{
{
protected float Dai, Rong;
static void Main(string[] args)
public float ChuVi()
{
{
HCN h;
return (Dai + Rong )*2;
h = new HCN();
}
h.Nhap();
public float DienTich()
h.Xuat();
{
Console.WriteLine("Chu vi hinh chu nhat:
return Dai* Rong;
{0}", h.ChuVi());
}
Console.WriteLine("Dien tich hinh chu nhat:
public void Nhap()
{0}", h.DienTich());
{
Console.ReadLine();
Console.WriteLine("Nhap chieu dai: ");
}
Dai = float.Parse(Console.ReadLine());
}
Console.WriteLine("Nhap chieu rong: ");
}
Rong = float.Parse(Console.ReadLine());
}
- Từ khoá this
Từ khoá this được dùng để tham chiếu đến
chính bản thân của đối tượng đó.
Ví dụ:
public void SomeMethod (int hour)
{
this.hour = hour;
}
- 3.Sử dụng các thành viên tĩnh
Phương thức tĩnh (static) được nói là hoạt động trong lớp. Do
đó, nó không thể được tham chiếu this chỉ tới.
Phương thức static cũng không truy cập trực tiếp vào các
phương thức không static được mà phải dùng qua thể hiện
của đối tượng.
Việc truy cập đến thành viên tĩnh (static) phải thực hiện
thông qua tên lớp (không được truy cập thành viên tĩnh thông
qua đối tượng) theo cú pháp:
TênLớp.TênThànhViênTĩnh
- Ví dụ
Ví dụ 4‑6 Cách sử dụng phương thức tĩnh
using System;
public class MyClass
{
public void SomeMethod(int firstParam, float secondParam)
{
Console.WriteLine("Here are the parameters received: {0}, {1}", firstParam, secondParam);
}
}
-------------------------------------------------------------------------------------
public class Tester
{
static void Main( )
{
int howManyPeople = 5;
float pi = 3.14f;
MyClass mc = new MyClass( );
mc.SomeMethod(howManyPeople, pi);
}
}
Trong ví dụ trên phương thức Main() là tĩnh và phương thức SomeMethod() không là tĩnh.
- 3.Sử dụng các trường tĩnh (tt)
Cách dùng chung các biến thành viên tĩnh là giữ vết của một số các thể hiện
mà hiện tại nó đang tồn tại trong lớp đó.
using System; public void HowManyCats1()
public class Cat {
{
public Cat() Console.WriteLine("{0}
{ cats adopted", instances);
instances++; }
}
private static int instances =
public static void HowManyCats()
{
0;
Console.WriteLine("{0} cats public static int instances1 =
adopted",instances); 0;
} }
- 3. Sử dụng các trường tĩnh (tt)
public class Tester
{
static void Main()
{
Cat c = new Cat();
//Truy cap vao phuong thuc ko Static phải tạo 1 đối tượng
c.HowManyCats1();
//Khong the truy cap vao phuong thuc Static
//bang this, hay the hien
//đoi tuong ma Tendoituong.phuongthuc_static
Cat.HowManyCats();
Cat frisky = new Cat();
Cat.HowManyCats();
Cat whiskers = new Cat();
Cat.HowManyCats();
}
}
- 4. Truyền tham số
Trong C#, ta có thể truyền tham số cho phương
thức theo kiểu tham chiếu hoặc tham trị
- Truyền bằng tham chiếu
Mộthàm chỉ có thể trả về một giá trị. Trong
trường hợp muốn nhận về nhiều kết quả, ta
sử dụng chính các tham số truyền cho hàm
như các tham số có đầu ra (chứa trị trả về).
Ta gọi tham số truyền theo kiểu này là
tham chiếu.
- Ví dụ
Trị trả về trong tham số
public class Time
{
// một phương thức public
public void DisplayCurrentTime()
{
System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}“, Month, Date, Year, Hour, Minute, Second);
}
public int GetHour( )
{
return Hour;
}
public void GetTime(ref int h, ref int m, ref int s)
{
h = Hour;
m = Minute;
s = Second;
}
- Ví dụ (tt)
// hàm dựng
public Time(System.DateTime dt)
{
Year = dt.Year;
Month = dt.Month;
Date = dt.Day;
Hour = dt.Hour;
Minute = dt.Minute;
Second = dt.Second;
}
// biến thành viên private
private int Year;
private int Month;
private int Date;
private int Hour;
private int Minute;
private int Second;
}
- Ví dụ (tt)
public class Tester
{
static void Main( )
{
System.DateTime currentTime = System.DateTime.Now;
Time t = new Time(currentTime);
t.DisplayCurrentTime( );
int theHour = 0;
int theMinute = 0;
int theSecond = 0;
t.GetTime(ref theHour, ref theMinute, ref theSecond);
System.Console.WriteLine("Current time: {0}:{1}:{2}",
theHour, theMinute, theSecond);
}
}
nguon tai.lieu . vn