Cấu trúc:
if (expression) statement1 [else statement2]
Trong đó expression : biểu thức trả về giá trị theo kiểu boole (đúng, sai) hoặc là một kiểu chứa đựng toán tử là true và false
statement1 : những dòng lệnh được thực hiện nếu biểu thức đúng
statement2 : những dòng lệnh được thực hiện nếu biểu thức là sai
Ví dụ 1:
if (x > 10) if (y > 20) Console.Write("Statement_1"); else Console.Write("Statement_2");
Ví dụ 2
if (x > 10) { if (y > 20) Console.Write("Statement_1"); } else Console.Write("Statement_2");
Cấu trúc:
switch (expression) { case constant-expression: statement jump-statement [default: statement jump-statement] }
Trong đó:
expression: một số nguyên hoặc chuỗi biểu thức
statement: là những câu lệnh đi kèm để thực hiện nếu điều khiển được chuyển đến case hoặc default.
jump-statement: chuyển điều khiển chương trình ra ngoài thân vòng lạp
caseconstant-expression: điều khiển được chuyển đến một điều kiện case tùy theo giá trị của nó
Ví dụ:
using System; class SwitchTest { public static void Main() { Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large"); Console.Write("Please enter your selection: "); string s = Console.ReadLine(); int n = int.Parse(s); int cost = 0; switch(n) { case 1: cost += 25; break; case 2: cost += 25; goto case 1; case 3: cost += 50; goto case 1; default: Console.WriteLine("Invalid selection. Please select 1, 2, or 3."); break; } if (cost != 0) Console.WriteLine("Please insert {0} cents.", cost); Console.WriteLine("Thank you for your business."); } }
Cấu trúc
for ([initializers]; [expression]; [iterators]) statement
initializers: khởi động bộ đếm (số lần lặp).
expression: biểu thức điều khiện có giá trị theo kiểu boolean.
iterators: câu lệnh gia tăng hoặc giảm số lần lặp
statement: những câu lệnh được thực thi
Ví dụ
using System; public class ForLoopTest { public static void Main() { for (int i = 1; i <= 5; i++) Console.WriteLine(i); } }
Giá trị trả về:
1 2 3 4 5
Cấu trúc
while (expression) statement
trong đó
- expression
- Một biểu thức có giá trị trả về là bool, dùng để kiểm tra điều kiện lặp.
- statement
- Những câu lệnh được thực thi
(*) Chú ý: dùng biểu thức điều kiện lặp để số lần lặp là hữa hạn, tránh trường hợp lọc vô hạn.
Ví dụ:
using System;
class WhileTest
{
public static void Main()
{
int n = 1;
while (n < 6)
{
Console.WriteLine("Current value of n is {0}", n);
n++;
}
}
}
Trả về
Current value of n is 1
Current value of n is 2
Current value of n is 3
Current value of n is 4
Current value of n is 5
Cấu trúc
do statement while (expression);
trong đó
- expression
- Một biểu thực trả về giá trị có kiểu boolean (đúng, sai), biểu thức này kiểm tra điều kiện lặp
- statement
- Câu lệnh để được thực thi.
Chú ý
Không giống như câu lệnh while, thân của vòng lặp do được thực hiện ít nhất một lần.
Ví dụ:
using System;
public class TestDoWhile
{
public static void Main ()
{
int x;
int y = 0;
do
{
x = y++;
Console.WriteLine(x);
}
while(y < 5);
}
}
Trả về
0
1
2
3
4
Ví dụ:
Chú ý trong ví dụ này, mặc dầu điều kiện lặp trả về false, nhưng vòng lập cũng được thực hiện một lần.
using System;
class DoTest {
public static void Main()
{
int n = 10;
do
{
Console.WriteLine("Current value of n is {0}", n);
n++;
} while (n < 6);
}
}
Current value of n is 10
Một biến phải được khai báo trước khi nó có thể chứa dữ liệu.
Các loại biến
C# định nghĩa có 7 kiểu biến, bao gồm: static variables, instance variables, array elements, value parameters, reference parameters, output parameters, and local variables.
Ví dụ sau sẽ miêu tả 7 kiểu biến đó. class A { public static int x; int y; void F(int[] v, int a, ref int b, out int c) { int i = 1; c = a + b++; } } x là một static variable, y là một instance variable, v[0] là một array element, a là một tham số truyền theo giá trị(value parameter), b là một tham số truyền theo địa chỉ(reference parameter), c là một tham số output, và i là một biến cục bộ.
Những nội dung trong phần này tổng kết hóa những điểm quan trọng nhất về khái niệm OOP trong C#. Nội dung bao gồm
- Định nghĩa lớp, đối tượng
- Hàm tạo (Constructor), hàm hủy (Destructor)
- Function Overloading.
- Thừa kế trong lập trình C#.
- Overriding Method.
- Polymorphism
- Abstract Class trong C#
- Namespaces
- Enumerators
Một Class là một khái niệm mô tả cho những thực thể có chung tính chất và hành vi. Class định nghĩa những thuộc tính và hành vi được dùng cho những đối tượng của lớp đó. Do đó có thể nói Class là một khuôn mẫu cho các đối tượng.
Công thức để tạo một class
AccessModifier class className
{
// thân class
}
Đối tượng là một đại diện, hay có thể nói là một sản phẩm của một class. Tất cả các đối tượng đều có chung những thuộc tính và hành vi mà class định nghĩa. Cách tạo đối tượng giống như cách tạo một biến có kiểu dữ liệu là Class.
Ưu điểm của việc sử dụng Class và Đối tượng
Có một số những ưu điểm của việc sử dụng Class và đối tượng trong phát triển phần mềm. Những ưu điểm nổi bật nhất được liệt kê như sau:
- Duy trì code bằng việc mô hình hóa
- Đóng gói những sự phức tạp trong mã lênh từ người dùng
- Khả năng sử dụng lại
- Cung cấp đơn kế thừa để thực thi nhiều phương thức.
Hàm tạo (Constructors) và hàm hủy (Destructors) trong C#
Constructors là những hàm đặc biệt cho phép thực thi, điều khiển chương trình ngay khi khởi tạo đôi tượng. Trong C#, Constructors có tên giống như tên của Class và không trả lại giá trị.
Ví dụ
class Library
{
private int ibooktypes;
//Constructor
public Library()
{
ibooktypes = 7;
}
public Library(int value)
{
ibooktypes = value;
}
}
Là một hàm đặc biệt được sử dụng để làm sạch bộ nhớ. Cách khai báo giống như Constructor nhưng không có tham số và được bắt đầu bằng dấu “~”.
Ví dụ
class Library
{
private int ibooktypes;
//Constructor
public Library()
{
ibooktypes = 7;
}
public Library(int value)
{
ibooktypes = value;
}
~ Library()
{
//thực thi câu lệnh
}
}
Method Overloading xuất hiện khi trong một class có từ hai hàm có cùng tên. Có hai kiểu Method Overloading: Ví dụ
class Library { // Function Overloading public void insertbooks(int id) { // } public void insertbooks(int id, int type) { // } public void insertbooks(string id, int type) { // } }
C# cung cấp mô hình đơn kế thừa.
Ví dụ về kế thừa trong C#.
/* Ví dụ về thừa kế trong lậ trình C# */
using System;
using System.Collections.Generic;
using System.Text;
namespace __OOP_Inheritance
{
class Program
{
static void
{
Dog objDog = new Dog(4);
objDog.displayProperties();
Chicken objChicken = new Chicken(2);
objChicken.displayProperties();
Console.Read();
}
}
class Animal
{
protected int ifoots;
protected string sName;
protected void setFoot(int ival)
{
ifoots = ival;
}
protected void setName(string sVal)
{
sName = sVal;
}
public void displayProperties()
{
Console.WriteLine(sName + " have " + ifoots.ToString()+ " foots");
}
}
class Dog : Animal
{
public Dog(int ival)
{
setName("Dog");
ifoots = ival;
}
}
class Chicken : Animal
{
public Chicken(int ival)
{
setName("Chicken");
setFoot(ival);
}
}
}
Xét ví dụ sau đây:
using System.Collections.Generic;
using System.Text;
namespace __OOP_polymorphism
{
class Program
{
static void
{
Child objchild = new Child();
Console.WriteLine("Result is " + objchild.methodA().ToString());
Console.Read();
}
}
class Parent
{
public int methodA()
{
return methodB() * methodC();
}
public virtual int methodB()
{
return 1;
}
public int methodC()
{
return 2;
}
}
class Child : Parent
{
public override int methodB()
{
return 3;
}
}
}
Kết quả chạy trương trình
Như bình thường của mô hình kế thừa, kết quả trả về khi gọi hàm methodA() từ đối tượng của lớp Child phải là “Result is 2”. Nhưng trong kết quả trên, kết quả là “Result is 6”. Kết quả này do hàm methodB() tại lớp Child đã override hàm methodB() tại lớp Parent.
Vậy ta có thể khái quá Polymorphism như sau:
- Polymorphism không chỉ đơn giản là overriding, mà nó là overrding thông minh.
- Khác biệt giữ Overriding và Polymorphism đó là trong Polymorphism, sự quyết định gọi hàm được thực hiện khi chương trình chạy.
Không có nhận xét nào:
Đăng nhận xét