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

40 3.4K 38
Lập trình hướng đối tượng trong C#

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lập trình hướng đối tượng trong C# (Object Oriented Programming in C#) Lớp và đối tượng Class & Object Giới thiệu về class  Xây dựng các kiểu dữ liệu mới là đặc tính quan trọng của ngôn ngữ lập trình hướng đối tượng  Có thể tạo kiểu dữ liệu mới trong C# bằng cách định nghĩa lớp (class). Mỗi thể hiện của lớp được gọi là đối tượng (object)  Lớp là 1 kiểu dữ liệu chung của một nhóm đối tượng nào đó. Ví dụ: loài mèo, loài chó Tạo class Ví dụ: public class Cat { // Trường (field) public string _name; public double _weight; // Phương thức (method) public void Sound() { Console.WriteLine(“Mew mew”); } } Tương tự như struct, định nghĩa class trong C# cũng hoàn toàn tương tự Tạo đối tượng với từ khóa new  Sau khi định nghĩa lớp Cat, chúng ta có thể khai báo đối tượng với kiểu Cat Cat cat1, cat2;  Khi chưa gán giá trị cho đối tượng, nó sẽ mang giá trị null. Để tạo mới 1 đối tượng, ta dùng từ khóa new: cat1 = new Cat();  Có thể gán đối tượng này bằng đối tượng khác. Bản chất phép gán này là gán tham chiếu của đối tượng này bằng tham chiếu của đối tượng kia, khi 1 đối tượng thay đổi (không thay đổi tham chiếu), đối tượng kia cũng thay đổi theo cat1 = cat2; Hàm khởi tạo (Constructor)  Hàm khởi tạo mặc định: Mỗi class trong C# được cung cấp sẵn 1 hàm khởi tạo mặc định, khi ta tạo 1 hàm khởi tạo, hàm mặc định này sẽ biến mất  Trong ví dụ trên, lớp Cat được cung cấp sẵn hàm khởi tạo Cat(), nếu ta khai báo 1 hàm khởi tạo thì hàm Cat() sẽ mất  VD: public class Cat { public Cat(string name) { _name = name; } } Hàm khởi tạo (Constructor)  Khi đó, ta không thể khởi tạo đối tượng bằng hàm Cat() được nữa mà phải dung hàm Cat(string name) // Lệnh đúng Cat cat1 = new Cat(“Tom”); // Lệnh có lỗi Cat cat2 = new Cat();  Ta có thể ghi đè lên hàm khởi tạo mặc định, mục đích để đưa các dữ liệu về mặc định public Cat() { _name = “Mew”; _weight = 1; } Từ khóa this  Từ khóa this dùng để truy cập thể hiện hiện tại của class, thường dùng để phân biệt tên thành viên và tên tham số khi có sự trùng nhau public class Person { public string name; public Person(string name) { this.name = name; } } Móc nối các hàm khởi tạo bằng từ khóa this public class Cat { public Cat(string name, double weight) { _name = name; _weight = weight; } public Cat(string name) : this(name, 1) { } public Cat(double weight) : this(“Mew”, weight) { } } Chúng ta có thể tạo ra 1 hàm khởi tạo tổng quát rồi gọi nó trong các hàm khởi tạo khác Tùy chọn tham số public class Cat { public Cat(string name = “Mew”, double weight = 1) { _name = name; _weight = weight; } } // Khi tạo đối tượng Cat cat1 = new Cat(); // name = “Mew”, weight = 1 Cat cat2 = new Cat(“Tom”); // name = “Tom”, weight = 1 Cat cat3 = new Cat(weight: 2); // name = “Mew”, weight = 2 Tương tự như hàm, hàm khởi tạo cũng có các chức năng: giá trị tham số mặc định, truyền giá trị theo tên tham số [...]... tĩnh Ba trụ cột của hướng đối tượng • Tính đóng gói • Tính kế thừa • Tính đa hình Tính đóng gói Encapsulation C# hỗ trợ 5 loại bổ từ truy xuất Bổ từ truy xuất public Phạm vi không giới hạn private Các bổ từ truy xuất trong C# Giới hạn truy cập Chỉ được sử dụng trong class khai báo nó protected Chỉ được sử dụng trong class khai báo nó và các class dẫn xuất internal Chỉ được sử dụng trong các class cùng... get; set; } public int Level { get; set; } }  C# sẽ tự tạo 1 trường private giống như trường name bên trên  Với class Pokemon đã tạo ở trên, ta có thể tạo 1 đối tượng Pokemon Pokemon mewtwo = new Pokemon(); mewtwo.Name = “Mewtwo”; mewtwo.ID = 150; Cú pháp khởi tạo đối tượng mewtwo.Level = 100;  Ta có thể viết gọn đoạn code trên theo cú pháp khởi tạo đối tượng Pokemon mewtwo = new Pokemon() { Name =... các class cùng khối assembly với class khai báo nó protected internal Chỉ được sử dụng trong class khai báo nó và các class dẫn xuất thuộc cùng khối assembly Mặc định với class là internal Mặc định với các thành viên bên trong class là private  Trong C++ class Humans{ Đóng gói với phương pháp truyền thống  Trong C# public class Humans string name; { public: private string name; void setName(string);... hay dùng là để đếm số đối tượng đã được tạo } }  Trong 1 lớp, ta có thể tạo đối đa 1 hàm khởi tạo tĩnh, hàm này không có tham số và được thực hiện duy nhất 1 lần trước mọi hàm khởi tạo khác, thường dùng để tạo giá trị cho các trường dữ liệu tĩnh public class TaiKhoan { public static int soLuongTK; Hàm khởi tạo tĩnh & lớp tĩnh public static TaiKhoan() { soLuongTK = 0; } }  Chú ý: Trong các hàm tĩnh,... Humans::setName(string s){ Giống như C++ và Java, ta có thể đóng gói dữ liệu trong C# bằng cách sử dụng bổ từ private cho dữ liệu rồi viết các phương thức setter và getter } name = s; public string getName() } { string Humans::getName(void){ return name; return name; } } }  Thay vì phải viết 2 hàm getter và setter riêng biệt như trên, C# cho phép sử dụng “thuộc tính” (property) để tương tác giống như tương... sealed class sẽ dẫn đến lỗi Cơ bản về kế thừa // Error class MyString : String { }  Trong lớp con, ta có thể gọi hàm khởi tạo của lớp cha bằng cách sử dụng từ khóa base Cách dùng tương tự từ khóa this Mặc định khi không dùng base thì sẽ gọi hàm khởi tạo mặc định không tham số public class Humans Kiểm soát sự khởi tạo đối tượng của lớp cha bằng từ khóa base { public string Name { get; set; } public int... string School { get; set; } Kiểm soát sự khởi tạo đối tượng của lớp cha bằng từ khóa base public int Grade { get; set; } public Student() {} public Student(string name, int age, string school, int grade) : base(name, age) { School = school; Grade = grade; } }  Ngoài ra, ta cũng có thể gọi phương thức của lớp cha bằng từ khóa base  Khác với C++, giống Java, C# chỉ hỗ trợ kế thừa đơn, việc kế thừa từ nhiều... (hoặc set) cho thuộc tính thì thuộc tính đó sẽ là thuộc tính chỉ đọc (hoặc chỉ ghi)  Ngoài ra, C# còn cho phép sử dụng các bổ từ trước các phương thức get, set để giới hạn truy cập đến thuộc tính  Thuộc tính tĩnh  Cách sử dụng giống như trường tĩnh  Các hàm get, set cũng chỉ được gọi các thành viên tĩnh trong class public class Car { public string name; public string Name { get { return name; } Mở... Trong class, ta có thể định nghĩa các thành viên tĩnh Để gọi 1 thành viên tĩnh, ta phải gọi thông qua tên lớp chứ không gọi qua thể hiện của lớp đó // Gọi đúng Từ khóa static Console.WriteLine(“Hello World”);... number public readonly int max; Trường hằng public static readonly int min; public Number() { max = 100; } public static Number() { min = 0; }  Từ khóa partial dùng để tách 1 class thành nhiều phần chứa trong các file code khác nhau // class1.cs public partial class Humans { Từ khóa partial public string Name { get; set; } public int Age { get; set; } } // class2.cs public partial class Humans { public . Lập trình hướng đối tượng trong C# (Object Oriented Programming in C#) Lớp và đối tượng Class & Object Giới thiệu về class. của ngôn ngữ lập trình hướng đối tượng  Có thể tạo kiểu dữ liệu mới trong C# bằng cách định nghĩa lớp (class). Mỗi thể hiện của lớp được gọi là đối tượng

Ngày đăng: 09/01/2014, 15:37

Từ khóa liên quan

Mục lục

  • Slide 1

  • Lớp và đối tượng

  • Giới thiệu về class

  • Tạo class

  • Tạo đối tượng với từ khóa new

  • Hàm khởi tạo (Constructor)

  • Hàm khởi tạo (Constructor)

  • Từ khóa this

  • Móc nối các hàm khởi tạo bằng từ khóa this

  • Tùy chọn tham số

  • Từ khóa static

  • Trường dữ liệu tĩnh

  • Hàm khởi tạo tĩnh & lớp tĩnh

  • Ba trụ cột của hướng đối tượng

  • Tính đóng gói

  • Các bổ từ truy xuất trong C#

  • Đóng gói với phương pháp truyền thống

  • Đóng gói với thuộc tính của .NET (.NET property)

  • Đóng gói với thuộc tính của .NET (.NET property)

  • Thuộc tính

Tài liệu cùng người dùng

Tài liệu liên quan