Lớp trừu tượng và interface trong C# (Bài 7)
Bài học lớp trừu tượng và interface trong c# sẽ trình bày với các bạn 2 nôi dung đó là làm việc với lớp trừu tượng (abstract class) và giao diện (interface) trong lập trình C#. Đây là 2 khái niệm rất cơ bản trong lập trình hướng đối tượng nói chung và lập trình C# nói riêng.
Nếu bạn nào đã tìm hiểu và làm việc với ngôn ngữ lập trình Java thì 2 khái niệm trên hoàn toàn không xa lạ. Vậy lớp trừu tượng là gì? Mục đích sử dụng của nó? Tương tự mục đích sử dụng interface là gì? Chúng ta sẽ cùng nhau tìm hiểu theo những nội dung bên dưới.
Lớp trừu tượng và interface trong C# – Lớp trừu tượng
Lớp trừu tượng là một lớp được khai báo với từ khoá abstract và bên trong lớp có thể có chứa phương thức trừu tượng (Phương thức trừu tượng là phương thức không có phần thân, tức là phương thức kết thúc bằng dấu chấm hỏi).
Lớp trừu tượng được sử dụng trong những trường hợp như tại thời điểm định nghĩa lớp có một hoặc một vài phương thức mà chúng ta không thể cài đặt được xử lý cho chúng. Và khi đó những phương thức này sẽ được khai báo là trừu tượng. Mục đích thứ hai là tạo ra một lớp không cho phép tạo thể hiện của nó (tạo đối tượng).
Lớp trừu tượng và interface trong C# – Giao diện (Interface)
Interace được sử dụng với 2 mục đích. Một là hỗ trợ đa thừa kế. Hai là tạo ra một ‘hợp đồng’ trong viết code giữa các thành viên trong một nhóm lập trình hoặc giữa các nhóm với nhau. Nghĩa là tất cả thành viên phải tuân thủ những qui định được khai báo trong interface.
Tạo interface trong Visual Studio
Chuột phải vào project hoặc namespace -> chọn Add -> chọn Class
Chọn Interface -> nhập tên -> chọn Add
Sau khi tạo thành công
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication
{
interface IMotor
{
}
}
Ví dụ khai báo 2 phương thức nhập và hiển thị trong IMotor
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication
{
interface IMotor
{
//Hai phương thức chỉ có phần khai báo
//không có phần thân hàm
void Nhap();
void HienThi();
}
}
Cài đặt interace
Một lớp nào đó cài đặt interface phải cài đặt xử lý cho tất cả các phương thức đã khai báo trong interface đó.
Ví dụ tạo lớp Motor cài đặt IMotor
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication
{
class Motor:IMotor
{
}
}
Hướng dẫn sử dụng chức năng phát sinh code trong Visual Studio
Kết quả sau khi sử dụng chức năng phát sinh code
namespace ConsoleApplication
{
class Motor:IMotor
{
public void Nhap()
{
throw new NotImplementedException();
}
public void HienThi()
{
throw new NotImplementedException();
}
}
}
Lớp trừu tượng và interface trong C# – Bài tập thực hành
Yêu cầu: Công ty Yamaha Việt Nam là một công ty chuyên sản xuất xe máy với các model khác nhau như Sirius, Exciter và cung cấp cho thị trường Việt Nam. Công ty có nhu cầu làm một phần mềm quản lý hệ thống phân phối các loại xe trên. Bạn là một thành viên trong nhóm phát triển phần mềm này và bạn được giao phải thực hiện các công việc sau:
Tạo interface có tên IMotor chứa các phương thức
void InputInfo();
void DisplayInfo();
Tạo lớp MyMotor cài đặt IMotor và có các thuộc tính sau
public string code; //Tối thiểu 4 ký tự và không trùng
public string name; //Tối thiểu 6 ký tự
public int capacity; //Capacity >= 50
public string type; //Xe số hoặc xe ga
Tạo lớp Exciterkế thừa từ lớp MyMotor. Trong lớp Exciterbổ sung thêm thuộc tính warranty (thời gian bảo hành) có kiểu int và giá trị >= 1 (đơn vị năm)
Tạo lớp Sirius kế thừa từ lớp MyMotor. Trong lớp Sirius bổ sung thêm thuộc tính color có kiểu string (màu xe) và giá trị của nó hoặc là xanh, vàng, trắng.
Tạo lớp thực thi Yamaha cho phép người dùng lựa chọn chức năng
Nhập thông tin xe exciter (enter: iei)
Nhập thông tin xe sirius (enter: isi)
Hiển thị thông tin xe exciter (enter: sei)
Hiển thị thông tin xe sirius (enter: ssi)
Tìm kiếm xe exciter (enter: se)
Tìm kiếm xe sirius (enter: ss)
Thoát chương trình (enter: ea)
Lựa chọn của bạn: