Lớp và phương thức trong C#
Lớp và phương thức trong C#
Lớp và phương thức trong C# là gì? Cùng R2S tìm hiểu từ a-z về lớp và phương thức cơ bản để áp dụng chúng vào lập trình một cách hiệu quả nhất, bạn nhé!
Lớp và phương thức trong C# là gì?
Trong lập trình C#, lớp (Class) được dùng để đóng gói các thuộc tính (properties), phương thức (methods) và sự kiện (events) liên quan đến một đối tượng hoặc một nhóm đối tượng cùng loại.
Một phương thức (method) trong C# là một khối mã để thực hiện một công việc cụ thể, và phương thức có thể được gọi bới một đối tượng hoặc thông qua lớp chứa nó.
Lập trình hướng đối tượng trong C# tập trung vào các khái niệm cơ bản của dữ liệu và phương thức để thao tác dữ liệu. Điều này giúp khắc phục nhược điểm của lập trình truyền thống, nơi mà việc sử dụng và bảo trì mã lệnh trở nên khó khăn.
Trong lập trình hướng đối tượng, bạn sẽ định nghĩa các đối tượng bao gồm các thuộc tính (dữ liệu) và các phương thức (các thao tác trên dữ liệu).
Đặc điểm lớp và phương thức trong c#
Lập trình hướng đối tượng C# có những đặc điểm như sau:
Abstraction (Trừu tượng) | là tính năng giúp hiển thị các thông tin cần thiết từ đối tượng một cách đơn giản hóa |
Encapsulation (Đóng gói) | là tính năng cho phép các khai báo trong một lớp bị ẩn ở lớp khác và chỉ có những thông tin cụ thể có thể được sử dụng |
Inheritance (Kế thừa) | Thừa kế là quá trình của việc tạo ra một lớp mới dựa trên các thuộc tính và phương thức của một lớp học hiện có. Các lớp học hiện có được gọi là lớp cơ sở trong khi lớp mới tạo ra được gọi là lớp dẫn xuất. |
Polymorphism (Đa hình) | là khả năng ứng xử khác nhau của đối tượng trong các tình huống khác nhau. |
Lớp và đối tượng là gì?
Lớp là một khuôn mẫu để tạo ra đối tượng. Mỗi đối tượng là một thể hiện của lớp và bên trong đối tượng đó chứa các thuộc tính, biến hoặc hành vi (còn gọi là phương thức). Ví dụ, chiếc xe Exciter, chiếc xe Airblade và chiếc xe Attila đều có thể được nhóm lại thành một lớp Motorbike.
Hướng dẫn tạo lớp trong Microsoft Visual Studio
- Bước 1: Chuột phải vào project (hoặc namespace)
- Bước 2: Chọn Add
- Bước 3: Chọn Class
- Bước 4: Nhập Motorbike tại Name
- Bước 5: Chọn mục Add
Kết quả sau khi tạo lớp Motorbike
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication.lesson03
{
class Motorbike
{
}
}
Tạo đối tượng (Instantiating Objects): Sử dụng cú pháp sau để tạo đối tượng
// ClassName là tên lớp, objectName là tên đối tượng
ClassName objectName = new ClassName();
Ví dụ tạo đối tượng là exciter sử dụng lớp Motorbike
Motorbike exciter = new Motorbike();
Thuộc tính là gì?
Thuộc tính là những thông tin cần được lưu trữ trong đối tượng. Ví dụ, khi tạo một đối tượng sinh viên, chúng ta cần lưu trữ các thông tin như mã sinh viên, tên sinh viên, giới tính, vv. Đó chính là thuộc tính trong lập trình hướng đối tượng nói chung và trong C# nói riêng.
Khai báo thuộc tính – Lớp và phương thức trong C#
accessModifier dataType attributeName;
Access Modifiers cho phép người lập trình chỉ định quyền truy cập của các lớp khác vào các thuộc tính. Dưới đây là bảng trình bày các quyền truy cập hiện có trong C#
public | Các thành viên được khai báo là public có thể truy cập từ bất kỳ đâu |
protected | Các thành viên được khai báo là protected có thể truy cập từ bên trong cùng một lớp hoặc bên trong lớp con của nó. |
internal | Các thành viên được khai báo là internal có thể truy cập từ bên trong cùng một assembly. |
private | Các thành viên được khai báo là private chỉ có thể truy cập bên trong cùng một lớp. |
Data type là kiểu dữ liệu đã được chúng tôi trình bày trong bài học ngôn ngữ lập trình C
Ví dụ khai báo thuộc tính trong C#
// Tên sinh viên
private string studentName;
// Địa chỉ
private string studentAddress;
// Giới tính
private string studentGender;
Lớp và phương thức trong c# – Phương thức
Nếu thuộc tính là đặc điểm của đối tượng và chứa thông tin của đối tượng thì phương thức là những xử lý như hiển thị thông tin sinh viên, tìm kiếm sinh viên theo mã số,…
Khai báo phương thức trong C#
accessModifier datatype|void methodName([list of parameters]){
// Xử lý của phương thức
}
Ví dụ khai báo phương thức trong C
public void Display(){
Console.Write("Name of student: " + name);
Console.Write("Address of student: " + address);
Console.Write("Gender of student: " + gender);
}
Ví dụ mẫu về chương trình lớp và phương thức trong c#
Tạo lớp Motorbike – Lớp và phương thức trong C#
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication.lesson03
{
class Motorbike
{
// Khai báo thuộc tính
private string name;
private string type;
private string color;
private int guarantee;
// Khai báo và định nghĩa phương thức
public void Input()
{
Console.Write("Enter motorbike name: ");
name = Console.ReadLine();
Console.Write("Enter motorbike type: ");
type = Console.ReadLine();
Console.Write("Enter motorbike color: ");
color = Console.ReadLine();
Console.Write("Enter motorbike guarantee: ");
guarantee = Convert.ToInt32(Console.ReadLine());
}
public void Display()
{
Console.WriteLine("Motorbike name: " + name);
Console.WriteLine("Motorbike color: " + color);
Console.WriteLine("Motorbike type: " + type);
Console.WriteLine("Motorbike guarantee: " + guarantee);
}
}
}
Tạo đối tượng exciter sử dụng lớp Motorbike
// Tạo đối tượng là exciter
Motorbike exciter = new Motorbike();
// Truy cập phương thức
exciter.Input();
exciter.Display();
Lớp và phương thức trong c# – Từ khoá static
Từ khóa static được sử dụng để khai báo lớp tĩnh (static class), khai báo thuộc tính tĩnh (static attribute), khai báo phương thức tĩnh (static method).
Sử dụng static trong khai báo lớp (static class):
Một lớp được khai báo với từ khoá static sẽ không thể tạo đối tượng và không cho kế thừa. Mục đích của việc sử dụng từ khoá static trong khai báo lớp là để lớp này chỉ chứa các thành viên tĩnh (thuộc tính và phương thức tĩnh).
Ví dụ tạo lớp static
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication.lesson03
{
static class Product
{
// Thuộc tính static
public static int productId;
public static float productPrice;
// Phương thức static
public static void Display()
{
Console.WriteLine("Product id: " + productId);
Console.WriteLine("Product price: " + productPrice);
}
}
}
Ví dụ sử dụng lớp static
// Truy cập các thuộc tính sử dụng tên lớp
Product.productId = 1;
Product.productPrice = 72.5F;
// Truy cập phương thức sử dụng tên lớp
Product.Display();
Lưu ý
- Thuộc tính và phương thức được khai báo với từ khóa static sẽ được truy cập bằng tên lớp thay vì tên đối tượng.
- Trong một lớp, một biến được khai báo là static sẽ được sử dụng chung cho tất cả các đối tượng của lớp. Do đó, một sự thay đổi của biến sẽ ảnh hưởng đến tất cả các đối tượng. Vì vậy, static không nên được sử dụng để khai báo thuộc tính.
Phương thức nạp chồng (overloading method)
Trong một lớp không thể có hai phương thức cùng tên và cùng danh sách tham số (kiểu dữ liệu và số lượng tham số), nhưng lập trình viên có thể khai báo nhiều phương thức cùng tên nhưng khác nhau về danh sách tham số (khác kiểu dữ liệu, số lượng tham số). Phương pháp này được gọi là phương thức nạp chồng (Overloading method) và đây chính là đặc điểm của tính đa hình trong lập trình hướng đối tượng.
Ví dụ khai báo và viết xử lý cho 2 phương thức không hợp lệ trong C#
Ví dụ khai báo và viết xử lý cho 2 phương thức hợp lệ trong C#
// Tính tổng 2 số thực
internal float Addition(float n1, float n2)
{
return n1 + n2;
}
// Tính tổng 3 số thực
internal float Addition(float n1, float n2, float n3)
{
return n1 + n2 + n3;
}
Đối số được truyền theo tham chiếu
Chúng ta có thể sử dụng từ khóa out hoặc ref để thực hiện truyền đối số theo tham chiếu, có nghĩa là những thay đổi cho đối số sẽ bị ảnh hưởng sau khi kết thúc phương thức. Sự khác biệt duy nhất giữa out và ref là ref yêu cầu biến phải được khởi tạo trước khi được truyền vào phương thức.
Ví dụ về out và ref trong lập trình C#
Gọi phương thức và truyền tham số
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication.lesson04
{
class OutAndRefExample
{
// Sử dụng từ khoá out
internal void Init(out int value)
{
value = 10;
}
// Sử dụng từ khoá ref
internal void Swap(ref int val1, ref int val2)
{
int tmp;
tmp = val1;
val1 = val2;
val2 = tmp;
}
}
}
OutAndRefExample oare = new OutAndRefExample();
// Truyền tham số với từ khoá out
int n;
oare.Init(out n);
Console.WriteLine("n = " + n);
// Truyền tham số với từ khoá ref
int a = 1, b = 2;
oare.Swap(ref a, ref b);
Console.WriteLine("a = {0}, b = {1}", a, b);
Lớp và phương thức trong c# – Từ khoá this
Từ khoá this được sử dụng trong lớp và phương thức trong C# để truy cập đến đối tượng hiện tại mà phương thức đang được gọi từ đó để giải quyết sự xung đột giữa các biến hoặc thuộc tính cùng tên khi thực hiện truyền đối số của phương thức
Ví dụ sử dụng từ khoá this
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication.lesson04
{
class Motorbike
{
// Khai báo thuộc tính
private string name;
private string type;
private string color;
private int guarantee;
public Motorbike(string name, string type, string color, int guarantee)
{
this.name = name;
this.type = type;
this.color = color;
this.guarantee = guarantee;
}
// Khai báo và định nghĩa phương thức
public void Input()
{
Console.Write("Enter motorbike name: ");
name = Console.ReadLine();
Console.Write("Enter motorbike type: ");
type = Console.ReadLine();
Console.Write("Enter motorbike color: ");
color = Console.ReadLine();
Console.Write("Enter motorbike guarantee: ");
guarantee = Convert.ToInt32(Console.ReadLine());
}
public void Display()
{
Console.WriteLine("Motorbike name: " + name);
Console.WriteLine("Motorbike color: " + color);
Console.WriteLine("Motorbike type: " + type);
Console.WriteLine("Motorbike guarantee: " + guarantee);
}
}
}
Lớp và phương thức trong c# – Bài tập thực hành
Viết một chương trình gồm các nhiệm vụ như sau:
a) Tạo lớp Medicine để lưu trữ các thông tin sau:
– Medicine Code
– Medicine Name
– Manufacturer Name
– Unit Price
– Quantity On Hand
– Manufactured Date
– Expiry Date
– Batch Number
b) Tạo lớp Sales để lưu trữ các thông tin sau:
– Medicine Code
– Quantity Sold
– Planned Sales
– Actual Sales
– Region
c) Mỗi lớp sử dụng phương thức khởi tạo để khởi tạo dữ liệu.
d) Phương thức Accept() trong mỗi lớp được sử dụng để nhập và lưu dữ liệu cho các thuộc tính.
e) Phương thức Print() trong lớp Medicine được sử dụng để hiển thị thông tin của tất cả các thuộc tính.
f) Lớp Sales có phương thức Display() để hiển thị tất cả thông tin của các thuộc tính trong lớp này. Một phương thức khác cùng tên được sử dụng để hiển thị thông tin của các thuộc tính theo Medicine Code.
g) Tạo lớp Test cài đặt phương thức Main() và cho phép người dùng tạo và hiển thị Medicine, Sales.
Kết luận
Các lớp và phương thức là phần quan trọng trong lập trình hướng đối tượng trong C#. Trong lập trình, các lớp được sử dụng để đóng gói phương thức và thuộc tính, giúp tăng tính bảo mật và tổ chức mã.
Đừng quên bỏ lỡ những bài viết tiếp theo của R2S để được học thêm kiến thức hữu ích về lập trình C# nhé.
Bài viết gốc được đăng tại: giasutinhoc.vn