lỚp vÀ ĐỐi tƯỢng -...

Post on 07-May-2018

221 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Click to edit Master subtitle style Click to edit Master subtitle style

LỚP VÀ ĐỐI TƯỢNG

Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM

CHƯƠNG 2:

1

Tạo Lớp Thêm Field Thêm Constructor Thêm Phương thức (method/function)

Tạo đối tượng Từ khóa ‘static’

NỘI DUNG

2

3 NGUYÊN TẮC LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

3

Đóng gói (Encapsulation) và Giao diện (Interface) Ẩn chi tiết của lớp (Đóng gói), chỉ cung cấp các phương thức cần thiết để dùng (Giao diện)

Thừa kế (Inheritance)

Tạo lớp mới thừa kế lớp đã có Đa hình (Polymorphism)

Khả năng tạo ra các lớp dẫn xuất, cài đặt cùng một method của lớp cơ sở theo những cách khác nhau (tùy từng lớp dẫn xuất)

3 nguyên tắc lập trình hướng đối tượng

4

TẠO LỚP

5

Lớp (class) dùng để mô hình các đối tượng thực thành các đối tượng trong chương trình Lớp (class) gồm có:

Dữ liệu (dùng biến) (fields) Phương thức (methods) Cách tạo đối tượng (constructors)

Tạo lớp

6

Cú pháp:

Tạo lớp

[access modifier] class <ClassName>[:BaseClassName] { // Khai báo biến (Fields) [access modifier] <type> VarName; // Constructors [public] ClassName([Parameters]) {} // Phương thức (Methods) [access modifier] <type> MethodName([Parameters]) {} }

7

Ví dụ: Tạo lớp Book để mô hình quyển sách Trong Visual Studio

Click phải lên tên Project Chọn Add → Class … Nhập tên lớp: Book

Tạo lớp

8

Tạo lớp

9

Tạo lớp

10

Tạo lớp

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CreatingClass { class Book { } }

11

Bước 1: Thêm các biến (field) vào lớp Giả sử lớp Book chứa các thông tin: tựa sách, tác giả, số trang, số từ

Thêm instance variable (field)

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CreatingClass { class Book { private string title; private string author; private int pages; private int wordCount; } }

12

Giải thích: Các field là các biến cục bộ (local variable) Các field có thể truy cập (dùng hoặc thay đổi) mọi nơi trong lớp

• Từ các Phương thức trong lớp • Từ các Constructors

Access Modifier của Field

• private: field được truy cập trong lớp, ngoài lớp không truy cập được

• public: field được truy cập mọi nơi, kể cả ngoài lớp

Thêm instance variable (field)

13

Bước 2: Cho biết cách tạo đối tượng Xem xét lại các field: Khi đối tượng tạo ra, field nên có giá trị gì thì hợp lý? Ví dụ:

• Khi tạo 1 quyển sách mà không có title được không? • Khi tạo 1 quyển sách, phần lớn một quyển sách có thông

tin thông thường gì? • Khi tạo 1 quyển sách, chúng ta muốn cung cấp đầy đủ

thông tin không?

Thêm các constructors

14

Thêm các constructors using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CreatingClass { class Book { private string title; private string author; private int pages; private int wordCount; public Book(string title) { this.title = title; } } }

15

Giải thích: public access modifier: Muốn người ngoài lớp có thể tạo đối tượng Book. Constructor giống method, nhưng có 2 khác biệt:

• Tên constructor giống tên lớp (Book) • Không có kiểu trả về

Nếu không viết constructor thì trình biên dịch sẽ tạo cho chúng ta constructor không tham số

Thêm các constructors

public Book() { }

16

Từ khóa ‘this’ namespace CreatingClass { class Book { private string title; private string author; private int pages; private int wordCount; public Book(string title) { this.title = title; } } }

17

Phạm vi của biến (variable scope)?: Là những nơi trong chương trình mà biến có thể truy cập

Class scope: Truy cập trong cả lớp Method scope: Truy cập trong method Block scope: Truy cập trong khối

Từ khóa ‘this’

18

Name hiding

Từ khóa ‘this’

class Book { private string title; private string author; private int pages; private int wordCount; public Book(string title) { Console.Write(title); } }

19

Giải quyết vấn đề Name hiding: Có 3 cách Đặt tên tham số khác với tên field Tên field bắt đầu là m_ (member):

• m_title, • m_author, …

Dùng từ khóa ‘this’

• Đặt tên field và tên tham số giống nhau (name hiding xảy ra) • Dùng từ khóa this khi muốn tham chiếu đến field

Từ khóa ‘this’

20

Từ khóa ‘this’ this tham chiếu đến đối tượng hiện tại mà chúng ta đang ở trong đó Khi ở trong lớp, có thể truy cập mọi thành viên (field và method) của lớp thông qua this

• Ví dụ: this.title, this.MethodName()

Cách dùng this • Thông thường không cần dùng this • Khi name hiding xảy ra, dùng this để truy cập đến field

của lớp

Từ khóa ‘this’

21

class Book { private string title; private string author; private int pages; private int wordCount; public Book(string title) { this.title = title; } public Book(string title, string author) { this.title = title; this.author = author; } public Book(string title, string author, int pages, int wordCount) { this.title = title; this.author = author; this.pages = pages; this.wordCount = wordCount; } }

22

Bước 3: Hình dung lớp cần cung cấp những chức năng gì (method nào)? Ví dụ: Người dùng lớp Book có muốn

Truy cập lấy title của Book? Gán title khác cho Book? Gán số từ cho Book dựa trên nội dung cung cấp, …?

Thêm Methods

23

Thêm Methods

24

class Book { private string title; private string author; private int pages; private int wordCount; … public string GetTitle() { return title; } public void SetTittle(string title) { this.title = title; } public void SetWordCoutFromText(string text) { wordCount = text.Split(' ').Length; } }

Giải thích: Access Modifier của method:

• public: người dùng ở ngoài lớp có thể gọi phương thức • private: Phương thức chỉ được gọi bên trong lớp

Phương thức bắt đầu Get, Set • Get: Phương thức trả về giá trị • Set: Phương thức gán giá trị (thường kiểm tra giá trị

trước khi gán)

Thêm Methods

25

TẠO ĐỐI TƯỢNG

26

Tạo đối tượng class Program { static void Main(string[] args) { Book book = new Book("Mindset", "Carol Dweck"); Console.WriteLine(book.GetTitle()); book.SetTittle("Mindset: How You Can Fulfil Your Potential"); Console.WriteLine(book.GetTitle()); } }

27

TỪ KHÓA ‘STATIC’

28

Thành viên được đánh dấu static Thành viên này không thuộc đối tượng (object/instance) Thành viên được shared cho các đối tượng (objects/instances)

Static variable Biến được đánh dấu static phía trước Biến này shared cho các đối tượng Dùng tên lớp để truy cập biến

Từ khóa ‘static’

class Something { public static int sharedNum; }

29

Static method Method được đánh dấu static phía trước Gọi Method không cần tạo đối tượng Dùng tên lớp để gọi method Trong static method, không được truy cập instance variable

Từ khóa ‘static’

class Something { public static void SharedMethod() { } }

30

Static class Class được đánh dấu static phía trước Tất cả member đều phải là static Thường dùng để tạo các method tiện ích

• Ví dụ 1: Lớp Console, Console.WriteLine() • Ví dụ 2:

Từ khóa ‘static’

static class Something { public static int shareNumber; public static void SharedMethod() { } }

31

Static constructor Constructor được đánh dấu static phía trước Dùng để khởi tạo các biến static Hàm static constructor được chạy khi lần đầu tiên dùng lớp

Từ khóa ‘static’

class Something { public static int sharedNumber; static Something() { sharedNumber = 8; } }

32

CLASS ACCESS MODIFIER

33

Lớp (class) có 2 access modifier: internal: Lớp chỉ được dùng trong 1 project hay 1 assembly public: Lớp được dùng trong các project hay các assembly

Class access modifier

internal class Something { }

public class Something { }

class Something { }

34

Lớp nên nằm trong một file riêng (C# không bắt buộc) Cách tạo lớp, các phần trong lớp gọi là member

Thêm field Thêm constructor Thêm method

Access modifier của field và method private Public

Access modifier của class internal Public

Khái niệm name hiding và từ khóa ‘this’

ĐIỂM CHÍNH

35

top related