1. Trang chủ
  2. » Thể loại khác

KẾ THỪA, ĐA NHIỆM TRONG C# .GV. Chử Đức Hoàng

34 21 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 3,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

bằng ngôn ngữ lập trình C# thì các vấn đề như: tránh trùng lặp khi phải viết lạinhiều đoạn chương trình giống nhau trong các lớp, khả năng tái sử dụng lại chươngtrình trong các lớp là vấ

Trang 1

KẾ THỪA, ĐA NHIỆM TRONG C#

GV Chử Đức Hoàng

Trang 2

bằng ngôn ngữ lập trình C# thì các vấn đề như: tránh trùng lặp khi phải viết lạinhiều đoạn chương trình giống nhau trong các lớp, khả năng tái sử dụng lại chươngtrình trong các lớp là vấn đề rất được quan tâm

lý thực thi các luồng công việc thực hiện bởi ngôn ngữ lập trình để thực hiện cácphần công việc khác nhau mà người dùng yêu cầu

 • Ngôn ngữ C# có cho phép kế thừa không và việc kế thừa được thựchiện như thế nào?

lý khi có sự xung đột xảy ra giữa các luồng trong C#?

Trang 3

Trình bày được các khái niệm về kế thừa trong C#

Trình bày được khái niệm về luồng và đa nhiệm trong C#

Xây dựng một chương trình C# đơn giản sử dụng tính kế thừa

Xây dựng một chương trình C# sử dụng tính đa nhiệm

Trang 4

1.1.1 Giới thiệu chung1

1.1.2 Đơn kế thừa2

1.1.3 Đa kế thừa3

1.1.4 Tính đa hình4

2.2.1 Khái niệm luồng5

2.2.3 Ứng dụng đa nhiệm7

2.2.2 Tạo luồng6

Trang 5

• Thừa kế là cách tạo một lớp mới từ các lớp có sẵn Nó cho phép tái sử dụng lại mãnguồn đã viết trong lớp có sẵn.

nhưng chúng tồn tại trong một mạng lưới sự phụ thuộc và quan hệ lẫn nhau

với nhau bởi vì chúng ta tạo ra một cây quan hệ

 Đặc biệt hoá là những nhánh của tổng quát hoá

 Nếu di chuyển lên trên cùng thì được trường hợp tổng quát hóa

 Nếu di chuyển xuống thì được trường hợp đặc biệt hóa

Trang 7

Đặc điểm

phương thức và biến thành viên của lớp cơ sở

Trang 11

Gọi phương thức khởi dựng lớp cơ sở

46 //gọi hàm tạo lớp cơ sở

47 public Student( string name, int age, int pointin):base(name, age)

từ khóa base

Có thể gọi hàm tạo lớp cơ sở từ hàm tạo lớp dẫn xuất

Trang 12

sẽ tự động gọi hàm tạo không đối số của lớp cơ sở.

này thì sẽ báo lỗi biên dịch

Trang 13

Gọi phương thức lớp cơ sở

thì phải thực hiện theo cấu trúc:

<Bổ từ truy xuất> new <Kiểu trả về> <Tên phương thức()>;

phương thức của lớp cơ sở và thay thế bằng phương thức mới được định nghĩa lại

base.<Tên phương thức()>;

Trang 14

4 public void SetId(int id) { this.id = id; }

12 public new void SetId(int id) { this.id = id; }

Định nghĩa lại phương thức lớp

cơ sở thông qua từ khoá “new”

Gọi phương thức lớp cơ sở thông qua từ khoá “base”

Trang 15

Chỉ cho phép đơn kế thừa:

1 class Student : Person

Chỉ cho phép đa kế thừa giao diện

Iemployee,…

3 .

Trang 16

Khi tạo một đối tượng lớp kế thừa thì thứ

tự khởi tạo sẽ bắt đầu từ lớp cơ sở rồi sau

đó mới khởi tạo đến lớp dẫn xuất

Trang 17

So sánh hai từ khai báo mới đó là kiểu "new" và "override" giống và khác

nhau gì?

Trang 18

Lớp lồng nhau

class, lớp kia gọi là lớp ngoài outer class

• Lớp nội có thể truy cập tất cả thành viên của lớp ngoài, kể cả private

outer_class.inner_class

Trang 19

public class Student

{

private int mathpoint;

private int phypoint;

public Student(int mathpoint, int phypoint) {this.mathpoint = mathpoint;

this.phypoint = phypoint;

}public override string ToString() {

string str = mathpoint.ToString() + "/" + phypoint.ToString();

return s;

}public class StudentDisplay

{public void Display(Student f) {Console.WriteLine(“Display Math Point {0}", f.mathpoint);

Console.WriteLine("Display Physical Point {0}", f.phypoint);

Trang 20

class Tester{

static void Main(){

Student f1 = new Student(3, 4);

Console.WriteLine("f1: {0}", f1.ToString());

fa.Display(f1);

}}

Ví dụ:

TruyTruy xuấtxuất lớplớp inner qua inner qua lớplớpouter,

outer, lớplớp outer outer tươngtương tựtự nhưnhưmanespace

Trang 21

Luồng (thread): Là một chuỗi liên tiếp các lệnh mà máy tính thực thi.

tục cho đến khi kết thúc hàm Main() Do vậy, phương thức Main() là phương thức

mà NET runtime lấy để bắt đầu cho các luồng

 Một thể hiện của luồng đaị diện cho một luồng

 Có thể tạo các luồng khác bằng cách khởi tạo một đối tượng luồng

Trang 22

Các trạng thái của luồng

 Start(): cho chạy luồng

 Suspend(): Đình chỉ tạm thời luồng để bắt đầu một luồng khác

 Resume(): Gọi phục hồi luồng

 Sleep(): cho luồng ngủ một khoảng thời gian

 Abort(): huỷ luồng

Trang 23

Các đặc tính của luồng:

 Quy trình không kết thúc cho đến khi các luồng “Foreground” kết thúc

 Các luồng “Background” được chấm dứt khi ứng dụng kết thúc

CurrentThread – get, static

 Trả về luồng tham chiếu để gọi luồng

 Luồng đã bắt đầu nhưng chưa kết thúc

 Highest, AboveNormal, Normal, BelowNormal, Lowest

 Unstarted, Running, Suspended, Stopped, WaitSleepJoin,…

Trang 24

công việc thì được gọi là ứng dụng đa nhiệm Khi đó thì phải đăng kí các độ ưu tiênkhác nhau cho các luồng khác nhau trong một tiến trình Luồng có độ ưu tiên caohơn thì nó sẽ chiếm quyền ưu tiên so với các luồng khác trong tiến trình

cao hơn đang làm việc

hướng đặt độ ưu tiên cao cho các luồng của hệ điều hành

Trang 25

• Sự đồng bộ

không đảm bảo được sự đồng bộ thì sẽ gây ra các lỗi

biến bằng từ khóa lock:

lock (x)

{

DoSomething();

}

khi mutex bao một biến thì không một luồng nào được quyền truy nhập vào biến đó

thúc và luồng kế tiếp thử truy xuất vào biến x , việc truy xuất đến biến sẽ bị từ chối.thay vào đó window đơn giản đặt luồng đó ngủ cho đến khi mutex được giải phóng.Mutex là một cơ chế đơn giản được dùng để điều khiển việc truy nhập vào các biến.Tất cả việc điều khiển này nằm trong lớp System.Threading.Monitor Câu lệnh lock

Trang 26

“race condition”: xuất hiện khi nhiều hơn một luồng cố gắng truy nhập vào cùng

một dữ liệu và không quan tâm đến các luồng khác làm gì Khi gặp lỗi này thì nó ítkhi dừng thực thi quá trình nhưng nó lại làm lỗi dữ liệu

Trang 27

Có mấy mức ứng dụng đa nhiệm? So sánh ưu tiên đa nhiệm của Windows

với các chương trình của hệ thống?

Trang 28

Trong đó a, b là hai đối tượng tham

chiếu mà cả hai luồng cần truy cập

Hai luồng cùng làm việc:

thái ngủ chờ luồng 2 giải phóng b

và ngược lại

Trang 29

Kết quả và khắc phục lỗi deadlock

đang ngủ và không thức dậy Cho đến khi lock trên b được giải phóng điều này cũngkhông thể xảy ra cho đến khi nào luồng thứ hai thức dậy

phóng lock

thứ tự

mà lock trên a đầu sẽ hoàn thành nhiệm vụ của nó sau đó các luồng khác sẽbắt đầu

Trang 30

On failing, 'Finish' button: Goes to Next Slide

Allow user to leave quiz: At any time

User may view slides after quiz: At any time

Trang 31

• Mô tả cách thức xây dựng một lớp mới dựa trên lớp đã có và khai

thác cũng như phạm vi truy cập các thuộc tính và phương thức củalớp nền và lớp dẫn xuất của ngôn ngữ C#

kế thừa của C#

khi thực hiện các luồng Cách khắc phục lỗi sảy ra khi sử dụng đaluồng trong ngôn ngữ C#

kế thừa trong C#

học viên

Trang 32

On failing, 'Finish' button: Goes to Next Slide

Allow user to leave quiz: At any time

User may view slides after quiz: At any time

Trang 34

Show ‘Next Slide’ Button: Don't show

Completion Button Label: Next Slide

Ngày đăng: 11/07/2021, 09:10

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w