Tải bản đầy đủ (.pdf) (10 trang)

Bài giảng ngôn ngữ C#: Bài 5 - Chử Đức Hoàng - Trường Đại học Công nghiệp Thực phẩm Tp. Hồ Chí Minh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.42 MB, 10 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>BÀI 5</b>



<b>KẾ THỪA, ĐA NHIỆM TRONG C#</b>



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

v1.0011106202 2


<b>TÌNH HUỐNG DẪN NHẬP</b>



• Khi thực hiện viết chương trình để quản lý học viên, của trường đại học Quốc gia


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ại
nhiề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ương


trình trong các lớp là vấn đề rất được quan tâm.


• Trong chương trình quản lý học viên có nhiều luồng cơng việc khác nhau. Việc quản


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ác


phần cơng việc khác nhau mà người dùng u cầu.


• Ngơnhiện như thếngữ C# có cho phépnào? kế thừa khơng và việc kế thừa được thực
• Các luồng cơng việc được thực hiện như thế nào cũng như cách xử


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>MỤC TIÊU</b>



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



</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

v1.0011106202 4


<b>NỘI DUNG</b>



1.1.1. Giới thiệu chung


1



1.1.2. Đơn kế thừa


2



1.1.3. Đa kế thừa


3



1.1.4. Tính đa hình


4



2.2.1. Khái niệm luồng


5



2.2.3. Ứng dụng đa nhiệm


7



2.2.2. Tạo luồng



</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>1.1.1. GIỚI THIỆU CHUNG</b>



• 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.


• Lớp và các thể hiện của lớp (tức đối tượng) tuy không tồn tại trong cùng một khối,


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í dụ như: sinh viên và công nhân đều là con người có tên, có tuổi,…


• Quan hệ “là -một” (is-a) là một sự <i>đặc biệt</i> <i>hóa</i>.


• Quan hệ đặc biệt hóa và tổng quát hóa là hai mối quan hệ <i>đối</i> <i><b>ngẫu</b></i> <i><b>và phân</b></i> <i><b>cấp</b></i>


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 qt hóa.


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

v1.0011106202 6


• Kế thừa là việc một lớp có thể thừa hưởng những thuộc tính và phương thức từ một


lớp khác.


• Cú pháp:



<Bổ từ truy cập> class <Tên lớp kế thừa>:<Tên lớp cơ sở>


<b>1.1.2. ĐƠN KẾ THỪA</b>



</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

Đặc điểm


• Lớp dẫn xuất sẽ kế thừa tất cả các thành viên của lớp cơ sở, bao gồm tất cả các


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


• Lớp dẫn xuất được tự do thực thi các phiên bản của một phương thức của lớp cơ sở.
• Lớp dẫn xuất cũng có thể tạo một phương thức mới và thuộc tính mới.


• C# chỉ cho phép đơn thừa kế giữa các lớp.


• Trong C# một lớp bắt buộc phải thừa kế từ một lớp nào đó.


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

v1.0011106202 8


<b>Ví</b> <b>dụ:</b>


<b>1.</b> <b>class Student</b>
<b>2.</b> <b>{</b>


<b>3.</b> <b>string name;</b>
<b>4.</b> <b>int age;</b>


<b>5.</b> <b>public void Birthday() { age++; }</b>
<b>6.</b> <b>int id;</b>



<b>7.</b> <b>public double Calpoint();</b>
<b>8.</b> <b>}</b>


<b>9.</b> <b>class Employee</b>
<b>10.</b> <b>{</b>


<b>11.</b> <b>string name;</b>
<b>12.</b> <b>int age;</b>


<b>13.</b> <b>public void Birthday() { age++; }</b>
<b>14.</b> <b>double salary;</b>


<b>15.</b> <b>public double Calsalary();</b>
<b>16.</b> <b>}</b>


<b>17.</b> <b>class Person</b>
<b>18.</b> <b>{</b>


<b>19.</b> <b>string name;</b>
<b>20.</b> <b>int age;</b>


<b>21.</b> <b>public void Birthday() { age++; }</b>
<b>22.</b> <b>}</b>


<b>23.</b> <b>class Student :Person</b>
<b>24.</b> <b>{</b>


<b>25.</b> <b>int id;</b>


<b>26.</b> <b>public double Calpoint();</b>


<b>27.</b> <b>}</b>


<b>28.</b> <b>class Employee :</b> <b>Person</b>
<b>29.</b> <b>{</b>


<b>30.</b> <b>double salary;</b>


<b>31.</b> <b>public double Calsalary();</b>
<b>32.</b> <b>}</b>


Lặp lại giống nhau


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

Cấp phát bộ nhớ


Khi tạo một đối tượng ở lớp thừa kế thì nó sẽ cấp phát bộ nhớ cho tất cả các trường của
cả lớp cơ sở và lớp dẫn xuất.


<b>33.</b> <b>class Person</b>
<b>34.</b> <b>{</b>


<b>35.</b> <b>string name;</b>
<b>36.</b> <b>int age;</b>


<b>37.</b> <b>...</b>
<b>38.</b> <b>}</b>


<b>39.</b> <b>class Student : Person</b>
<b>40.</b> <b>{</b>


<b>41.</b> <b>int</b> <b>id;</b>


<b>42.</b> <b>...</b>
<b>43.</b> <b>}</b>


<b>44.</b> <b>Public</b> <b>static</b> <b>void</b>
<b>Main()</b>


<b>45.</b> <b>{</b>


<b>46.</b> <b>Student</b> <b>s</b> <b>=</b> <b>new</b>


<b>Student();</b>
<b>47.</b> <b>}</b>


s name<sub>age</sub>
id


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

v1.0011106202 10
<b>Thực thi phương thức lớp cơ sở</b>


<b>49.</b> <b>class Person</b>
<b>50.</b> <b>{</b>


<b>51.</b> <b>public void Birthday()</b>
<b>52.</b> <b>{</b>


<b>53.</b> <b>age++;</b>
<b>54.</b> <b>}</b>


<b>55.</b> <b>...</b>
<b>56.</b> <b>}</b>



<b>57.</b> <b>class Student : Person</b>
<b>58.</b> <b>{</b>


<b>59.</b> <b>...</b>
<b>60.</b> <b>}</b>


<b>61.</b> <b>Public static void Main()</b>
<b>62.</b> <b>{</b>


<b>63.</b> <b>Student s = new Student();</b>
<b>64.</b> <b>s.Birthday();</b>


<b>65.</b> <b>}</b>


Gọi phương thức lớp cơ sở từ
đối tượng của lớp kế thừa


• Có thể gọi phương thức lớp cơ sở từ phương thức lớp dẫn xuất bằng từ


khoá “base”


</div>

<!--links-->

×