đề tài nguyên cứu interface môn Lập Trình hướng đối tượng

20 522 0
đề tài nguyên cứu interface môn Lập Trình hướng đối tượng

Đ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

TRƯỜNG ĐẠI HỌC THÔNG TIN LIÊN LẠC KHOA CÔNG NGHỆ THÔNG TIN -   - LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Đề tài: INTERFACE (LỚP TRỪU TƯỢNG) INTERFACE Nha Trang, tháng năm 2016 TRƯỜNG ĐẠI HỌC THÔNG TIN LIÊN LẠC KHOA CÔNG NGHỆ THÔNG TIN ĐỀ TÀI Interface (Lớp trừu tượng) GVHD: Ngoan Lớp: ĐHCN1A Nhóm sinh viên thực hiện: • • • • Huỳnh Quốc Đạt (nhóm trưởng) Triệu Nam Dương Lê Văn Cường Nguyễn Duy Thanh Tùng INTERFACE Nha Trang, tháng năm 2016 INTERFACE NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN INTERFACE Lớp trừu tượng (Abstract Class) lớp dùng để định nghĩa thuộc tính hành vi chung lớp khác Hay nói cách khác: Lớp trừu tượng lớp dùng để khai báo thuộc tính phương thức cho lớp khác sử dụng Ø (Lớp trừu tượng không cho phép khởi tạo tham số, khai báo mà thôi) Ø Lớp trừu tượng dùng lớp cha (base class) lớp có chất Ø Bản chất hiểu kiểu, loại, nhiệm vụ class Ø Mỗi lớp dẫn xuất (derived class - lớp con) thừa kế từ lớp trừu tượng Ø Từ khóa abstract dùng để định nghĩa Lớp trừu tượng Ø Những lớp định nghĩa cách dùng từ khóa abstract không cho phép khởi tạo đối tượng (instance) lớp Khái niệm: Một class mà định nghĩa với từ khóa abstract bao gồm nhiều phương thức mà thân bên ta gọi abtract class Nó bao gồm nhiều phương thức khác thực thi Một abstract class tương tự abstract class khai báo phương thức abstract Nhưng khác chỗ interface thực thi phương thức Mục đích: Ø Một abstract class coi class sở không đầy đủ Ø Abstract class coi quy tắc chung cho sub class lấy từ Khi class lấy từ INTERFACE bắt buộc phải có đầy đủ phương thức abstract khai báo clas abstract Định nghĩa : Ø Một astract class thực thi phương thức tương đối giống với class Thêm vào có thêm phương thức khác mà class đề thực thi chúng phương thức gọi phương thức abstract Ø Một class mà có từ khóa abstract có nhều phương thức mà không thực thi bên gọi abstract class Ø Trong trường hợp class mà có nhiều phương thức thân bên bạn sư dụng với từ khóa new Ø Một abstract class bắt buộc có phương thức abstract Và abstract class ngăn chặn việc kế thừa Không thể khóa.4 Sự thực thi: Ø Một abstract class thực thi theo cách tương tự class sở bình thường Các subclass kể thừa từ abstract class nạp chồng thực thi method Thêm vào subclass thực thi phương thức thực thi với tên tham số giống hệt Ø Nếu class không thực số phương thức abstract class abstract trình biên diẹc báo lỗi Chương trình chạy Ví dụ : using System; using System.Collections.Generic; using System.Text; namespace Abstract_Class { INTERFACE //Định nghĩa lớp trừu tượng abstract class NhanVien { protected string HoTen; protected int Tuoi; protected bool GioiTinh; } class Program { static void Main(string[] args) { NhanVien objPerson = new NhanVien(); } } } Các acbtract Method: Ø Các phương thức khai báo abstract class mà thân bên gọi abstract class Nó thực thi class kế thừa Ø Tương tự quy tắc phương thức Với kiểu truy suất , kiểu trả ,và dâu hiệu abstract class thân phương thức khai báo kết thúc với từ khóa Ví dụ 2: Định nghĩa lớp trừu tượng có thuộc tính & phương thức chung cho lớp dẫn xuất sử dụng o Chúng ta nhận thấy, mối Nhân viên có thuộc tính như: HoTen, Tuoi, GioiTinh Nhưng ChucVu khác o Ví dụ: Giám đốc có ChucVu Giám đốc, Kế toán có ChucVu Kế toán o Nên thuộc tính ChucVu ta khai báo lớp dẫn xuất - lớp con/derived class using System; INTERFACE using System.Collections.Generic; using System.Text; namespace Abstract_Class { //Định nghĩa lớp trừu tượng abstract class NhanVien { protected string HoTen; protected int Tuoi; protected bool GioiTinh; //Khai báo phương thức trừu tượng từ khoá abstract public abstract void CongViec(); } class Program { static void Main(string[] args) { } } } Định nghĩa lớp dẫn xuất GiamDoc KeToan sau: using System; using System.Collections.Generic; using System.Text; namespace Abstract_Class { //Định nghĩa lớp trừu tượng abstract class NhanVien { public string HoTen; INTERFACE public int Tuoi; public bool GioiTinh; //Khai báo phương thức trừu tượng từ khoá abstract public abstract void CongViec(); } //Định nghĩa lớp Dẫn xuất GiamDoc class GiamDoc : NhanVien { public string ChucVu; public override void CongViec() { //Code here } } //Định nghĩa lớp Dẫn xuất KeToan class KeToan : NhanVien { public string ChucVu; public override void CongViec() { //Code here } } class Program { static void Main(string[] args) { GiamDoc objGiamDoc = new GiamDoc(); objGiamDoc.HoTen = "Nguyen Van A"; objGiamDoc.Tuoi = 30; INTERFACE objGiamDoc.GioiTinh = true; objGiamDoc.ChucVu = "Giam Doc"; System.Console.WriteLine("Lop Dan xuat 'GiamDoc': {0}, {1}, {2}, {3}", objGiamDoc.HoTen, objGiamDoc.Tuoi, objGiamDoc.GioiTinh, objGiamDoc.ChucVu); KeToan objKeToan = new KeToan(); objKeToan.HoTen = "Nguyen Van B"; objKeToan.Tuoi = 26; objKeToan.GioiTinh = true; objKeToan.ChucVu = "Ke Toan"; System.Console.WriteLine("Lop Dan xuat 'Ke Toan': {0}, {1}, {2}, {3}", objKeToan.HoTen, objKeToan.Tuoi, objKeToan.GioiTinh, objKeToan.ChucVu); System.Console.ReadLine(); } } } Lớp Interface thực thi nhiều interfaces: Các subclass C# kế thừa nhiều class Chính điều C# không hỗ trợ đa kế thừa Từ hạn chế interface giới thiệu Một class C# thực thi nhiều interface Một vài định nghĩa: Ø Giao diện (Interface): chức mà ta thêm class Chức không đồng nghĩa với phương thức (hoặc hàm) Interface bao gồm nhiều hàm/phương thức tất chúng phục vụ cho chức 10 INTERFACE Ø Như vậy, Interface dùng để mô tả "bản thiết kế" cho chức class Nếu muốn tạo thiết kế, sử dụng abstract class Một thiết kế tất nhiên có thứ dựng sẵn có thứ abstract Ø Interface lớp Các lớp dẫn xuất từ Interface phải định nghĩa đầy đủ phương thức thuộc tính kế thừa từ Interface Ø Mục đích Interface để định nghĩa khả mà muốn có lớp Cài đặt Giao diện: Ø Để hiểu rõ Interface hơn, tìm hiểu ví dụ sau: Giả sử có lớp: Lớp Máy bay & Lớp Chim Ta thấy Máy bay có chức bay Chim có khả bay Ví dụ 1: Tạo Interface: Bay (IBay) cho lớp May bay & Lớp Chim thừa kế 11 INTERFACE Mã lệnh: using System; using System.Collections.Generic; using System.Text; namespace Interface { //khai bao interface Bay public interface IBay { void Bay(); } //Lớp Chim thừa kế interface IBay public class Chim : IBay { public void Bay() 12 INTERFACE { Console.WriteLine("Chim: Bay"); } } //Lớp MayBay thừa kế interface IBay public class MayBay : IBay { public void Bay() { Console.WriteLine("May Bay: Bay"); } } class Program { static void Main(string[] args) { Chim chim = new Chim(); chim.Bay(); MayBay maybay = new MayBay(); maybay.Bay(); System.Console.ReadLine(); } } } Cài đặt nhiều Giao diện: Trong ngôn ngữ C# cho phép thực thi nhiều giao diện Các giao diện cách dấu phẩy "," Ở ví dụ trên, thấy rằng: Chim & Máy bay có khả Bay Nhưng đồng thời Chim & Máy bay có khả Chạy Nên ta khai báo thêm Interface Chạy có tên IChay 13 INTERFACE Ví dụ 2: Cách C# thực thi nhiều giao diện using System; using System.Collections.Generic; using System.Text; namespace Interface { //khai báo interface Bay public interface IBay { void Bay(); } //khai báo interface Chạy public interface IChay { void Chay(); } //Lớp Chim thừa kế interfaces IBay, IChay public class Chim : IBay, IChay { public void Bay() { Console.WriteLine("Chim: Bay"); } public void Chay() { Console.WriteLine("Chim: Chay"); } } //Lớp MayBay thừa kế interfaces IBay, IChay public class MayBay : IBay, IChay { public void Bay() 14 INTERFACE { Console.WriteLine("May Bay: Bay"); } public void Chay() { Console.WriteLine("May Bay: Chay"); } } class Program { static void Main(string[] args) { Chim chim = new Chim(); chim.Bay(); chim.Chay(); MayBay maybay = new MayBay(); maybay.Bay(); maybay.Chay(); System.Console.ReadLine(); } } } Định nghĩa dẫn xuất: Một interface bao gồm thành phần abstract Khác với abstract class interface không thực thi phương thức Nhưng giống với abstract class interace new đối tượng Một interface thực thi từ class từ interface khác 15 INTERFACE Một interface khai báo dử dụng từ khóa “interface” Mặc định phần tử interface public với quyền truy suất Một interface không bao gồm số, biến, destructer, thành phần static Thực thi interface: Ø Một thực thi thực từ class tương tự việc kế thừa Khi thực việc thực thi interface cass bạn cần thiết phải thực thi tất thành phần interface Nếu tất phần tử không thực thi chương trình chạy Trình biên dịch báo lỗi Ø Các phương thức thực thi class với tên dấu hiệu giống khai báo interface Các interface việc thực thi nhiều interface: Ø Nhiều interface thực thi class đơn Bạn thực thi nhiều interface cách tên interface bạn thêm vào dấu phẩy Ø Một class thực thi nhiều interface bắt buộc phải thực toàn phương thức khai báo abstract interface Không cần phải sử dụng từ khóa override 10.Thực thi interface cách rõ ràng: Một class thực thi interface cách đắn interface có phương thức đặt tên xác 11 Interface kế thừa interface: Một inerface kế thừa nhiều interface không thực thi chúng Sự thực thi phải nhờ class 12 Điểm giống abstract class interface: 16 INTERFACE Ø Cả hai khởi tạo đối tượng Ø Cả hai khai báo phương thức không thực chúng Ø Cả hai bao gồm phương thức abstract Ø Cả hai thực thi từ class kế thừa Ø Cả hai kế thừa từ nhiều interface 13 Sự khác nhau: Abstract class Interfaces - Có thể kế thừa class nhiều interface - Một abstract class có nhiều- Chỉ kế thừa nhiều phương thức có thân bên interface - Các phương thức abstract- Không có class thực thi sử dụng từ khóa override - Không cần - Là lựa chọn thích hợp vừa khai báo phương thức thông thường - Thích hợp cho việc khai vừa khai báo phương thứcbáo phương abstract thức abstract - Có thể có hàm khởi tạo destructor - Không có 14 Cài đặt Giao diện cách tường minh: Một lớp cài đặt nhiều giao diện nên xảy trường hợp đụng độ tên hai giao diện có tên hàm Để giải xung đột ta khai báo cài đặt cách tường minh Ví dụ: Nếu ta có hai giao diện IStorable ITalk có phương thức Read () Lớp Document cài đặt hai giao diện Khi ta ta phải thêm tên giao diện vào trước tên phương thức 17 INTERFACE Mã lệnh : using System; using System.Collections.Generic; using System.Text; namespace Interface_Test { interface IStorable { void Read(); void Write(); } interface ITalk { void Read(); void Talk(); } public class Document : IStorable, ITalk { // document constructor public Document(string s) { Console.WriteLine("Creating document with: {0}", s); } // tạo read IStorable public virtual void Read() { Console.WriteLine("Implementing IStorable.Read"); } public void Write() { 18 INTERFACE Console.WriteLine("Implementing IStorable.Write"); } // cài đặt phương thức Read ITalk void ITalk.Read() { Console.WriteLine("Implementing ITalk.Read"); } public void Talk() { Console.WriteLine("Implementing ITalk.Talk"); } } class Program { static void Main(string[] args) { // create a document object Document theDoc = new Document("Test Document"); // Ép kiểu để gọi IStorable.Read() IStorable isDoc = theDoc as IStorable; if (isDoc != null) { isDoc.Read(); } // Ép kiểu để gọi ITalk.Read() ITalk itDoc = theDoc as ITalk; if (itDoc != null) 19 INTERFACE { itDoc.Read(); } theDoc.Read(); theDoc.Talk(); } } } 20 [...]... class có thể thực thi các interface một cách đúng đắn nếu các interface có các phương thức đặt tên chính xác 11 Interface kế thừa interface: Một inerface có thể kế thừa nhiều interface nhưng không có thể thực thi chúng Sự thực thi đó có thể phải nhờ một class 12 Điểm giống nhau của abstract class và interface: 16 INTERFACE Ø Cả hai đều không thể khởi tạo đối tượng Ø Cả hai đều khai báo các phương thức... Một interface chỉ bao gồm duy nhất các thành phần abstract Khác với abstract class một interface không thực thi bất kỳ một phương thức nào Nhưng giống với abstract class là một interace không thể new một đối tượng mới Một interface có thể được thực thi duy nhất từ một class hoặc từ các interface khác 15 INTERFACE Một interface được khai báo dử dụng từ khóa interface Mặc định các phần tử trong interface. .. trong interface 9 Các interface và việc thực thi nhiều interface: Ø Nhiều interface có thể được thực thi trong một class đơn Bạn có thể thực thi nhiều interface bằng cách giữa tên các interface bạn thêm vào dấu phẩy Ø Một class thực thi nhiều interface bắt buộc phải thực hiện toàn bộ các phương thức được khai báo là abstract trong các interface Không cần phải sử dụng từ khóa override 10.Thực thi interface. .. rằng: Chim & Máy bay đều có khả năng Bay Nhưng đồng thời Chim & Máy bay cũng có khả năng Chạy Nên ta khai báo thêm 1 Interface Chạy có tên IChay 13 INTERFACE Ví dụ 2: Cách C# thực thi nhiều giao diện using System; using System.Collections.Generic; using System.Text; namespace Interface { //khai báo interface Bay public interface IBay { void Bay(); } //khai báo interface Chạy public interface IChay { void... phương thức nhưng không thực hiện chúng Ø Cả hai đều bao gồm các phương thức abstract Ø Cả hai đều được thực thi từ các class kế thừa Ø Cả hai đều có thể kế thừa từ nhiều interface 13 Sự khác nhau: Abstract class Interfaces - Có thể kế thừa một class và nhiều interface - Một abstract class có thể có nhiều- Chỉ có thể kế thừa nhiều phương thức có thân bên trong interface - Các phương thức của abstract- Không.. .INTERFACE Ø Như vậy, Interface được dùng để mô tả một "bản thiết kế" cho một chức năng của class Nếu muốn tạo một bản thiết kế, hãy sử dụng abstract class Một bản thiết kế tất nhiên sẽ có những thứ đã được dựng sẵn và có những thứ là abstract Ø Interface không phải là lớp Các lớp dẫn xuất từ 1 Interface đều phải định nghĩa đầy đủ các phương thức và thuộc tính kế thừa từ Interface Ø Mục... INTERFACE Mã lệnh: using System; using System.Collections.Generic; using System.Text; namespace Interface { //khai bao interface Bay public interface IBay { void Bay(); } //Lớp Chim thừa kế interface IBay public class Chim : IBay { public void Bay() 12 INTERFACE { Console.WriteLine("Chim: Bay"); } } //Lớp MayBay thừa kế interface IBay public class MayBay : IBay { public void Bay() { Console.WriteLine("May Bay:... với quyền truy suất Một interface không bao gồm hằng số, biến, destructer, các thành phần static 8 Thực thi interface: Ø Một thực thi được thực hiện từ một class tương tự việc kế thừa Khi thực hiện việc thực thi một interface trong một cass bạn cần thiết phải thực thi tất cả các thành phần trong interface Nếu tất cả các phần tử không được thực thi chương trình không thể chạy Trình biên dịch sẽ báo lỗi... Ví dụ: Nếu ta có hai giao diện IStorable và ITalk đều cùng có phương thức Read () Lớp Document sẽ cài đặt hai giao diện này Khi đó ta ta phải thêm tên giao diện vào trước tên phương thức 17 INTERFACE Mã lệnh : using System; using System.Collections.Generic; using System.Text; namespace Interface_ Test { interface IStorable { void Read(); void Write(); } interface ITalk { void Read(); void Talk(); } public... thừa từ Interface Ø Mục đích của một Interface là để định nghĩa những khả năng mà chúng ta muốn có trong một lớp Cài đặt một Giao diện: Ø Để hiểu rõ về Interface hơn, chúng ta tìm hiểu ví dụ sau: Giả sử có 2 lớp: Lớp Máy bay & Lớp Chim Ta thấy Máy bay có chức năng bay Chim cũng có khả năng bay Ví dụ 1: Tạo Interface: Bay (IBay) cho lớp May bay & Lớp Chim thừa kế 11 INTERFACE Mã lệnh: using System; using

Ngày đăng: 27/06/2016, 16:31

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

  • Đang cập nhật ...

Tài liệu liên quan