Lập trình hướng đối tượng với C#.NET

01/07/2016 Nguyễn Hồng Vân

Để hiểu hơn về lập trình C#.NET và biết được lập trình hướng đối tượng với  C#.NET, chúng ta hãy cùng tìm hiểu bài viết sau.

1. Lớp

Khái niệm về lớp (Class)

  • Lớp là tập hợp các đối tượng (object) có cùng bản chất
  • Class = method + properties

- Method:

     Là các phương thức trong class (là các Function, procedure). Một phương thức được quy định phạm vi sử dụng thông qua các từ  khóa truy cập (private, public, protecd…). Phương thức còn được gọi là các hành vi, thể hiện hành động, chức năng của một đối tượng.

- Properties:

     Là các thuộc tính (đặc điểm) của một đối tượng còn gọi là các biến thành viên của lớp, một biến được quy định phạm vi sử dụng thông qua các từ khóa truy cập

  • Phân loại lớp

+ Lớp  được xây dựng sẵn trong trong ngôn ngữ lập trình: Các class này chứa trong các  các không gian tên.

     Ví dụ. Lớp Math, string, array

  • Math: Thư viện chứa các  hàm toán học

Sqrt(): trả về căn bậc hai của một số kiểu double

Pow(): hàm mũ

Round(), sin(), cos(), floor()…

Số pi, số e là các thuộc tính hằng số có sẵn.

  • String: là lớp chứa các hàm xử lý chuỗi
  • Array: Chứa các hàm xử lý mảng.

+ Lớp do người lập trình xây dựng có cú pháp như sau:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace WindowsFormsApplication1

{

    class Class1

    {

        // Định nghĩa các biến

        // Định nghĩa các phương thức

 

    }

}

Ví dụ. Xây dựng class clstong để tính tổng của hai số nguyên

 class clstong{

                             // khai báo các thuộc tính

     private int a,b;

     // khai báo các phương thức

     public int tong(int a,int b)

                 {

                             Return a+b;

                 }

}

Trên đây, hai biến a,b là các biến thành viên của lớp clstong. Hai biến được quy định phạm vi kiểu private (chỉ các thành phần bên trong class nhìn thấy, nghĩa là sử dụng được chúng và khi đó các đối tượng bên ngoài không dùng được a và b).

Phương thức tong(a,b) dùng để tính tổng của hai số nguyên và khai báo pham vi public (cho phép các đối tượng bên ngoài có thể nhìn thấy và sử dụng thông qua cơ chế chuyền thông điệp)

2. Phương thức

- Cú pháp

Access_specifier modifier datatype method_name(parameter_list)

{   //body of method

}

 Trong đó:

  • Access_specifier: Chỉ định truy cập vào phương thức.
  • Modifier: Cho phép bạn đặt thuộc tính cho phương thức.
  • Datatype: Kiểu dữ liệu mà phương thức trả về, nếu không có một giá trị nào được trả về, kiểu dữ liệu có thể là void.
  • Method_name: Tên của phương thức
  • Parameter_list: Chứa tên của tham số được sử dụng trong phương thức và kiểu dữ liệu, dấu phẩy được dùng để phân cách các tham số.
  • Phương thức khởi tạo của lớp (contructor)
  • Là phương thức được dùng để khởi tạo giá trị cho các biến thành viên của lớp
  • Thường được dùng trong khi cần che dấu và kiểm soát(Đóng gói) dữ liệu
  • Có tên trùng với tên của class chứa nó
  • Không có giá trị trả về (Kiểu trả về là void)
  • Được gọi đến khi khởi tạo một INSTANCE của lớp
  • Trong một lớp có thể chứ nhiều phương thức khởi tạo (hiện tương nạp chồng), tuy nhiên các phương thức này phải khác nhau về danh sách tham số
  • Cấu trúc của contructor

 Phạm Vi > < Void><Tên lớp>< Danh sách tham số >

{

                 // Các câu lệnh

}

                

    Ví dụ. tạo contructor cho lớp clstong

 class clstong

{

     private int a,b;

     public void clstong(int oa, int ob)

     {

                 If ((oa>0) &&(ob>b))

                             a=oa;b=ob;

}

Giải thích:

+  Contructor trên cho phép khởi tạo giá trị cho các biến  thành viên a,b với hai tham số truyền vào tương ứng là oa>0 và ob>0.

     + Trong trường hợp cần che dấu dữ liệu khi đó các biến của lớp cần khai báo pham vi sử dụng là private và khi đó cần xây dựng các phương thức set(), get() .

Set(): thiết lập giá trị cho các biến của lớp

Get(): lấy giá trị từ bên ngoài vào

-  Phương thức thông thường :  Được gọi là các hàm thành phần của lớp.

Cấu trúc:

< Phạm vi > <Kiểu trả về> < Tên PT> < [ DSTS])

{

// biến cục bộ

//các câu lệnh

Return bt;

}

Giải thích:

+ < phạm vi>:  Cho biết phạm vi sử dụng của phương thức

  • private: Chỉ cho phép được sử dụng trong class
  • public: Cho phép đối tương bên ngoài sử dụng (phá vỡ nguyên lý đóng gói encapsulation )
  • proteced: Không cho phép lớp con thừa kế

+ < Kiểu trả về >: là kiểu dữ liệu cơ sở (double, int, string…)

+ < [DSTS]): Dùng nhận giá trị đầu vào cho phương thức

+ < Tên phương thức >: Do người dùng đặt tuân theo quy tắc đặt tên biến

+ < return bt; >: Câu lệnh trả về giá trị cho hàm

Ví dụ.

public int tonghaiso(int a,int b)

{

// biến cục bộ s

     Int s;

// câu lệnh

     s=a+b;

     return s; // là câu lệnh trả về giá trị cho hàm

}

Nhận xét.

- Có thể dùng hàm thành phần làm phương thức khởi tạo  cho các biến thành viên của lớp

Ví dụ.

private void kt(int oa,int ob)

     { a=oa;b=ob;}

3. Thuộc tính

      - Thuộc tính của một đối tượng được dùng để mô tả tính chất cho đối tượng đó.

Ví dụ.

Trong đối Diem – các điểm trong không gian hai chiều ta có các thuộc tính là x,y.

Trong một lớp, thuộc tính còn được gọi là các biến thành viên của lớp. Là nguồn dữ liệu sử dụng cho các phương thức bên trong lớp. Ta cũng có thể truy cập vào các biến của lớp tùy theo phạm vi quy định sử dụng. của biến

  • Cú pháp khai báo các thuộc tính:

<PVTC> <KDL> <danh sách biến>;

  + PVTC: Phạm vi truy cập của biến cho biết phạm vi sử dụng của biến

  • Private: Chỉ cho phép được sử dụng trong class
  • Public: Cho phép đối tương bên ngoài sử dụng (phá vỡ nguyên lý đóng gói encapsulation)
  • Proteced: Không cho phép lớp con thừa kế

  + KDL: đây là kiểu trả về của biến

  + Danh sách biến: được ngăn cách nhau bởi dấu phẩy.   

Ví dụ.  Định nghĩa lớp điểm trong không gian hai chiều:

 Class DIEM {

// khai báo biến của lớp

     private  double x,y;

// định nghĩa hàm thành phần

     public double khoang_cach()

                                         {// mã lệnh;   }         

}

4. Thí dụ về thiết kế lớp

     Xây dựng lớp clsmaxmin gồm:

  • Các biến thành viên a,b
  • Phương thức khởi tạo cho các biến thành viên a,b
  • Phương thức timmin(), timmax() để tìm giá trị nhỏ nhất, lớn nhất của a và b.

Mã lệnh:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace WindowsFormsApplication1

{

    class clsmaxmin

    {

        // thuoc tinh a,b

        public int a, b;

        //phuong thuc khoi tao gia tri a va b

        public void clsmaxmin(int oa, int ob)

        {

            a = oa; b = ob;

        }

        //phuong thuc timmin()

        public int timmin(int a, int b)

        {

            int min;

            if (a > b) min = a;

            else

                min = b;

            return min;

        }

        //phuong thuc timmax()

        public int timmax(int a, int b)

        {

            int max;

            if (a > b) max = a;

            else

                max = b;

            return max;

        }

 

    }

}

5. Nạp chồng

Trong một lớp có thể có nhiều phương thức trùng tên nhưng phải khác nhau về danh sách tham số. ( hiện tượng nạp chồng )

 Ví dụ: Trong cùng phạm vi một lớp ta xây dưng hai phương thức cùng tên A(a,b), A(a,b,c). hai phương thức này sẽ cùng tên nhưng khác nhau về danh sách tham số.

6. Thừa kế

- Khái niệm kế thừa  .

+ Tính thừa kế cho phép một lớp chia sẻ các thuộc tính và các phương thức được định nghĩa trong một hoặc nhiều lớp khác.

 + Kế thừa cho phép thừa hưởng các mã lệnh đã có, giảm thiểu công việc của lập trình viên, Đây là một điểm rất mạnh của lập trình OOP ( lập trình hướng đối tượng)

Thông qua khả năng kế thừa, chương trình sẽ gắn gọn, dễ hiểu, Không phải viết lại mã lệnh khi thực hiện một công việc có tính chất kế thừa

  • Khai báo lớp kế thừa:

public class  A : B

{

// Các thuộc tính mới

// Các phương thức mới

}

Giải thích:

  • Trên đây A là một lớp đã được định nghĩa, bên trong nó có chứa các thành phần là các phương thức và thuộc tính
  • Ta xây dựng lớp B  kế thừa từ lớp A.  Khi đó B sẽ thừa kế mọi thành phần trong A. Trong B ta có thể xây dựng thêm các phương thức và thuộc tính mới tùy theo mục đích kế thừa. A gọi là lớp cha, B gọi là lớp con.

Ví dụ 1. Xây  lớp clsmaxmin như sau:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace WindowsFormsApplication1

{

    class clsmaxmin

    {

        // thuoc tinh a,b

        public int a, b;

        //phuong thuc khoi tao gia tri a va b

        public void khoitao(int oa, int ob)

        {

            a = oa; b = ob;

        }

        //phuong thuc timmin()

        public int timmin(int a, int b)

        {

            int min;

            if (a > b) min = a;

            else

                min = b;

            return min;

        }

        //phuong thuc timmax()

        public int timmax(int a, int b)

        {

            int max;

            if (a > b) max = a;

            else

                max = b;

            return max;

        }

 

    }

}

Sau đó ta xây dựng lớp thừa kế clsmaxminTK  bổ sung 2 thuộc tính c,d, phương thức tìm max, min của bốn số nguyên a,b,c,d. Khi đó lớp clsmaxmin sẽ từa hưởng tất cả các thành phần cs trong lớp clsmaxmin. Lớp clsmaxminTK được xây dựng như sau:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace WindowsFormsApplication1

{

    class clsmaxminTK: clsmaxmin

    {

        // khai bao thuoc tinh cua lop ke thua

        public int c, d;

        public void khoitaoTK(int oc, int od)

        {

           

            c = oc; d = od;

        }

        //dinh nghia phuong thuc timmaxTK()

        public int timmaxTk(int a, int b, int c, int d)

        {

            return(timmax(timmax(a,b),timmax(c,d)));

        }

        public int timminTk(int a, int b, int c, int d)

        {

            return (timmin(timmin(a, b), timmin(c, d)));

        }

    }

}

 

     Ví dụ 2. Xây dựng lớp clssinhvien như sau:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace WindowsFormsApplication1

{

    class clssinhvien

    {

        public string hoten;

        public string masv;

        public string diachi;

        public string sdt;

        public int cn;

        public float dcc;

        public float dtx;

        public float dgk;

        public float dt;

        public float diemtrungbinh(float dcc, float dtx, float dgk, float dt)

        {

            return (dcc * 10 + dtx * 10 + dgk * 20 + dt * 60) / 100;

        }

        public int chuyencan(int cn)

        {

            if (cn >= 5)

                return 0;

            return 1;

        }

    }

}

Sau đó ta xây dựng lớp thừa kế clsdiem để thực hiện xếp loại theo điểm trung bình của từng môn học:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace WindowsFormsApplication1

{

    class clsdiem:clssinhvien

    {

        public string monhoc;

        public int xeploai(float dcc, float dtx, float dgk, float dt)

        {

            float dtb = diemtrungbinh(dcc, dtx, dgk, dt);

            if (dtb >= 85)

                return 0;

            else

                if (dtb >= 70)

                    return 1;

                else

                    if (dtb >= 55)

                        return 2;

                    else

                        if (dtb >= 40)

                            return 3;

            return 4;

 

        }

    }

}

 

Tag: lập trình C#lap trinh C#tự học lập trình C#tu hoc C#tìm hiểu C#tim hieu C#Lập trình hướng đối tượng với C#.NET

Đang phát triển ...

Bài viết liên quan

Các thành phần của ADO.NET

ADO.NET là gì trong C#, các thành phần của ADO.NET gồm những gì, chúng ta hãy cùng nhau tìm hiểu bài viết sau đây.

Giới thiệu ADO.NET trong C#.NET

ADO.NET là một khái niệm trong C#.NET, Vậy để hiểu hơn về ADO.NET chúng ta hãy tìm hiểu bài viết giới thiệu ADO.NET trong C#.NET

Giới thiệu lập trình hướng đối tượng với C#.NET

Giới thiệu lập trình hướng đối tượng với C#.NET là bài viết chúng ta sẽ tìm hiểu ngay sau đây.

Một số liên kết, thực đơn và menu trong C#.NET

Để hiểu hơn về C#.NET và sự liên kết giữa các Form trong ứng dụng, hộp thoại và menu trong C#.NET, chúng ta hãy cùng tìm hiểu bài viết.

Các control trên toolbox trong C#.NET.

Bài viết giới thiệu về các control trên toolbox  trong C#.NET. Để hiểu hơn về bài viết, chúng ta cùng tìm hiểu bài viết.

WINDOWS FORM trong C#.NET

Bài viết này xin giới thiệu tới các bạn về WINDOWS FORM trong C#.NET và các khái niệm về WINDOWS FORM trong C#.NET

Chương trình con trong C#.NET

Bài viết sau đây sẽ giới thiệu tới các bạn về chương trình con trong C#.NET. Để hiểu rõ hơn, chúng ta hãy tìm hiểu bài viết.

Các kiểu dữ liệu có cấu trúc trong C#.NET

Bài viết sau đây sẽ giới thiệu tới các bạn các kiểu dữ liệu có cấu trúc trong C#.NET. Để hiểu hơn chúng ta hãy cùng nhau tìm hiểu bài viết.

Các câu lệnh trong C#.NET

Để hiểu hơn về lập trình C# và các câu lệnh trong C#.NET, chúng ta hãy cùng nhau đi tìm hiểu bài viết sau đây.

Các thành phần của ngôn ngữ C#.NET

Bài viết sau đây sẽ giới thiệu tới các bạn về các thành phần của ngôn ngữ C#.NET, chúng ta hãy cùng nhau tìm hiểu bài viết.

Giới thiệu về NET Framework và C#.NET

Bài viết này sẽ giới thiệu tới các bạn bài viết về lập trình C# và giới thiệu về  NET Framework và C#.NET. 

Tấn công ransomware cực lớn trên toàn cầu, tải về bản vá lỗi ngay

Tấn công ransomware cực lớn trên toàn cầu, tải về bản vá lỗi ngay

Cuộc tấn công vào NHS đã sử dụng một dạng ransomware có tên Wanacryptor và nhắm mục tiêu vào hàng nghìn tổ chức ở 74 quốc gia. Ransomware là một dạng tấn công mạng có liên quan đến việc các hacker nắm quyền kiểm soát máy tính hoặc thiết bị di động và yêu cầu đòi tiền chuộc. Bằng nhiều cách, những kẻ tấn công tải phần mềm độc hại vào thiết bị và mã hóa thông tin của nạn nhân.

Kỹ thuật tìm kiếm và thay thế từ cơ bản đến nâng cao trong MS Office (Word)

Kỹ thuật tìm kiếm và thay thế từ cơ bản đến nâng cao trong MS Office (Word)

Trong Word nói riêng, Office nói chung, có lẽ ai cũng biết chức năng tìm kiếm và thay thế nội dung văn bản, nhưng ngoài ra, còn nhiểu chức năng khác trong hộp thoại tìm kiếm và thay thế mà không phải ai cũng biết để sử dụng. Trong đó có tìm kiếm và thay thế định dạng, sử dụng các ký hiệu đại diện, các ký tự đặc biệt… 

Bài 6: Thủ thuật outlook 2010

Bài 6: Thủ thuật outlook 2010

Bài viết giới thiệu đến các bạn một số thủ thuật được dùng trong outlook 2010, để giúp công việc của các bạn được dễ dàng hơn.

Bài 5: Quản lý các thông tin trong  outlook 2010

Bài 5: Quản lý các thông tin trong outlook 2010

Bài viết giới thiệu về phương pháp quản lý thông tinn trong outlook 2010. Chúng ta hãy cùng tìm hiểu xem có điểm gì khác và nổi bật so với outlook 2007

Bài 4: Sử dụng lịch làm việc một cách hiệu quả outlook 2010

Bài 4: Sử dụng lịch làm việc một cách hiệu quả outlook 2010

Để công việc của đạt hiệu quả cao hơn, chúng ta hãy cùng nhau tìm hiểu cách sử dụng lịch làm việc một cách hiệu quả hơn trong outlook 2010

Bài 3: Quản lý hộp thư của bạn về dung lượng và lưu trữ outlook 2010

Bài 3: Quản lý hộp thư của bạn về dung lượng và lưu trữ outlook 2010

Bài viết sau đây sẽ giới thiệu về mục quản lý hộp thư của bạn về dung lượng và lưu trữ trong microsoft outlook 2010.

Hàm SLEEP trong PHP

Hàm SLEEP trong PHP

Có những lúc trong công việc lập trình ta cần mã tạm dừng theo một thời gian định trước thì trong php có hỗ trợ hàm sleep để các bạn làm điều này.

Hàm Rand trong PHP

Hàm Rand trong PHP

Đôi lúc chúng ta lập trình cần đến những con số sinh ngẫu nhiên vào những công việc khách nhau hôm này mình xin giới thiệu với mọi người hàm sinh số ngẫu nhiên trong PHP

Bài 9: Giới thiệu lập trình hướng đối tượng trong PHP (OOP)

Bài 9: Giới thiệu lập trình hướng đối tượng trong PHP (OOP)

Các bạn tự học PHP nên biết về lập trình hướng đối tượng trong PHP, kỹ thuật lập trình hỗ trợ công nghệ đối tượng

Bài 8: Hàm có sẵn thông dụng trong PHP

Bài 8: Hàm có sẵn thông dụng trong PHP

Hàm thông dụng trong php cần biết, các bạn mới bắt đầu lên nắm rõ ý nghĩa cấu trúc cách dùng những hàm này để bổ trợ kiến thức sau này

Bài 7: Hàm trong PHP

Bài 7: Hàm trong PHP

Hàm do người sử dụng định nghĩa cho phép bạn xử lý những tác vụ thường lặp đi lặp lại trong ứng dụng. cách khai báo, cú pháp của hàm trong php