Lập trình trên Window cơ bản phần 4
Trang 1Lập trình trên Windows
Giảng viên : Hồ Hoàn Kiếm
Trang 2Overloading Methods
Trang 3Overloading Methods
public class Point
{
public int m_x;
public int m_y;
public Point (){ }
public Point(int xx,int yy)
{
m_x = xx ;
m_y = yy;
}
public static Point operator + (Point p1,Point p2) { Point result = new Point();
result.m_x = p1.m_x + p2.m_y;
result.m_y = p1.m_x + p2.m_y;
return result;
}
}
Trang 4Overloading Methods
static void Main( string [] args)
{
Point objP1 = new Point(1,1);
Point objP2 = new Point(2,2);
Point objResult = new Point();
objResult = objP1 + objP2;
Console.WriteLine("The result is m_x = {0} and m_y = {1}", objResult.m_x , objResult.m_y);
}
Trang 5Kiểu Structs
Kiểu dữ liệu do người dùng định nghĩa.
Có thể định nghĩa các phương thức.
Có thể định nghĩa các Constructors
Structs là kiểu tham trị
Structs không được kế thừa
Trang 6Kiểu Structs
public struct Point
{
public int x, y;
public Point(int p1, int p2) {
x = p1;
y = p2;
}
public int Add()
{
return x+y;
}
}
Trang 7Kiểu Structs
static void Main(string[] args)
{
Point p1 = new Point() ; Point p2 = new Point(10,10);
Console.Write(" Point 1: ");
Console.WriteLine("x = {0}, y = {1}", p1.x, p1.y);
Console.Write(" Point 2: ");
Console.WriteLine("x = {0}, y = {1}", p2.x, p2.y);
Console.WriteLine("Call Add method: {0}",p2.Add()); Console.ReadLine();
}
Trang 8Kiểu Enumrator
Tập hợp các hằng số đã được đặt tên
enum Days
{
//mac dinh Phan tu dau tien bat tu 0
Sat,
Sun,
Mon,
Tue,
Wed,
Thu,
Fri
};
Trang 9Kiểu Enumrator
public static void Main()
{
int x = (int) Days.Sun;
int y = (int) Days.Fri;
Console.WriteLine("Sun = {0} : Value : {1}", x,Days.Sun); Console.WriteLine("Fri = {0} : Value : {1}", y,Days.Fri );
}
Kết quả :
Sun = 2 : Value : Sun
Fri = 7 : Value : Fri
Trang 10 Sử dụng để truy cập các thành phần Private.
Kiềm tra dữ liệu cho các thành phần trong lớp
public class Square
{
public double mSide;
}
public class Test {
static void Main() {
Square obj = new Square ();
obj mSide = 3;
}
}
Trang 11Properties …
public class Square
{
//Khi báo các thành phần private double mSide;
// Khai báo property
public double Side
{
get { };
set { };
}
// Khai báo các phương thức }
Trang 12Properties …
Property giống như field, nhưng việc truy cập đươc thực hiện qua thao tác get và set
public int Side {
get
{ return mSide;
}
set
{
if (mSide < 0) return ;
mSide = value; }
}
Trang 13Properties …
namespace SampleProperty
{
public class Rectangle {
private int m_Length ;
private int m_Width ;
private int m_Area ;
public Rectangle() {
m_Length = 3; //<=> Length = 3; m_Width = 2;
}
Trang 14Properties …
public int Length
{
get { return m_Length;
} set {
if(m_Length < 0 ) return; m_length = value;
} }
Trang 15Properties …
public int Width {
get
{ return m_Width;
}
set
{ // Đọan mã kiểm tra giá trị … m_Width = value;
} }
Trang 16Properties …
public int Area
{
get
{
return m_Area;
}
}
public void CalArea()
{
m_Area = m_Length*m_Width; }
Trang 17Properties …
public class Test
{
public static void Main()
{
Rectangle objRectangle = new Rectangle();
objRectangle Length = 3;
objRectangle Width = 4;
objRectangle.CalArea();
Console.WriteLine("{0}", objRectangle Area ); }
}
Trang 18 Khi thành phần của lớp là các kiểu tập hợp.
Sử dụng với : new, virtual, sealed, override, abstract, extern
get và set
Khai báo sử dụng từ khóa this.
Khi sử dụng Indexer ta sử dụng dấu [] cho get và set
.
Trang 19
class IndexerClass
{
private int [] myArray = new int[100]; public int this [int index]
{
get {
If (index < 0 || index >= 100) return 0; else
return myArray[index]; }
set {
if (!(index < 0 || index >= 100))
myArray[index] = value;
}
}
}
Trang 20{
public static void Main()
{
IndexerClass b = new IndexerClass();
b[3] = 256;
b[5] = 1024;
for ( int i=0; i<=10; i++)
{ Console.WriteLine("Element # {0} = {1}", i, b[i]); }
}
}