Lớp trừu tượng và interface trong C# (Bài 6)

Nội dung của 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

lop truu tuong va interface trong c# 1

Chọn Interface -> nhập tên -> chọn Add

lop truu tuong va interface trong c# 2

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

lop truu tuong va interface trong c# 3

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 Exciter kế thừa từ lớp MyMotor. Trong lớp Exciter bổ 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: