intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

ĐỀ CƯƠNG C#

Chia sẻ: Luong Thanh Binh | Ngày: | Loại File: DOC | Số trang:84

129
lượt xem
32
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Các bài tập liên quan trong quá trình học môn lập trình hướng đối tượng trong ngành công nghệ thông tin

Chủ đề:
Lưu

Nội dung Text: ĐỀ CƯƠNG C#

  1. LuongThanhBinh – redhacker3824@Gmail.com. Đề Cương C# Câu 1: Cấu trúc cơ bản của chương trình C#. //Vùng bắt đầu khai báo, sử dụng không gian tên. using System; using System.Collections.Generic; using System.Text; //Vùng kết thúc sử dụng không gian tên. //Khai báo không gian tên của ứng dụng. namespace OnTapFull { //Vùng bắt đầu khai báo các class. static class Program { static void Main(string[] args) { //Vùng bắt đầu khai báo tên và các phương thức trong lớp. { //Khai báo khác. } } } } Lưu ý, mặc định không gian tên của Project chính là tên của Project, bạn có thể thay đổi không gian tên này bằng cách khai báo lại hoặc cấu hình trong cửa sổ thuộc tính của Project. Câu 2: Thực đơn Refactor. Với số lượng lớn mã chương trình trong 1 Project, khi có nhu cầu về thay thế, chuyển đổi tầm vực của biến, sắp xếp thứ tự tham số,… thì bạn sử dụng dạng kỹ thuật Refactor từ thực đơn của Visual Studio .NET 2005. Refactor cung cấp các kỹ thuật như: Extract Method, Encapsulate Field, Extract Interface, Reorder Parameters, Remove Parameters, Rename và Promote Local Variable to Parameters. Extract Method: Cho phép định nghĩa 1 phương thức mới dựa trên đoạn chương trình đang chọn, sau đó khai báo để gọi phương thức vừa tạo ngay trên đoạn mã đã tách thành phương thức. Bạn hãy thực hành với ví dụ dưới đây: //Vùng bắt đầu khai báo, sử dụng không gian tên. using System; using System.Collections.Generic; using System.Text; 1
  2. LuongThanhBinh – redhacker3824@Gmail.com. //Vùng kết thúc sử dụng không gian tên. //Khai báo không gian tên của ứng dụng. namespace OnTapFull { //Vùng bắt đầu khai báo các class. static class Program { static void Main(string[] args) { int i = 9; int j = 10; int tong = i + j; Console.WriteLine("Tong = {0} + {1} = {2}", i, j, tong); Console.ReadKey(); } } } Làm như sau: Sau đó 1 cái table nữa hiện ra yêu cầu nhập tên hàm muốn tạo ra: Bạn nhập tên của hàm muốn tạo và nhấp OK. 2
  3. LuongThanhBinh – redhacker3824@Gmail.com. Đoạn Code sẽ như thế này: //Vùng bắt đầu khai báo, sử dụng không gian tên. using System; using System.Collections.Generic; using System.Text; //Vùng kết thúc sử dụng không gian tên. //Khai báo không gian tên của ứng dụng. namespace OnTapFull { //Vùng bắt đầu khai báo các class. static class Program { static void Main(string[] args) { TinhTong(); } private static void TinhTong() { int i = 9; int j = 10; int tong = i + j; Console.WriteLine("Tong = {0} + {1} = {2}", i, j, tong); Console.ReadKey(); } } } Bài 3: Hoàn thành bài tập đơn giản sau: 3
  4. LuongThanhBinh – redhacker3824@Gmail.com. Đầu tiên bạn tạo class ConCho.cs using System; using System.Collections.Generic; using System.Text; namespace BaiOne { class ConCho { private string ten; public string Ten { get { return ten; } set { ten = value; } } private string giong; public string Giong { get { return giong; } set { giong = value; } } private int tuoi; public int Tuoi { get { return tuoi; } 4
  5. LuongThanhBinh – redhacker3824@Gmail.com. set { tuoi = value; } } private string maulong; public string Maulong { get { return maulong; } set { maulong = value; } } } } Sau đó bạn tạo class Program.cs using System; using System.Collections.Generic; using System.Text; namespace BaiOne { class Program { static void Main(string[] args) { ConCho a = new ConCho(); a.Ten = "Ben"; a.Giong = "Nhat"; a.Tuoi = 1; a.Maulong = "Trang Vang"; Console.WriteLine("Ten Con Cho: {0}", a.Ten); Console.WriteLine("Tuoi Con Cho: {0}", a.Tuoi); Console.WriteLine("Giong Con Cho: {0}", a.Giong); Console.WriteLine("Mau Long Con Cho: {0}", a.Maulong); Console.ReadKey(); } } } Thế là xong yêu cầu bài toán. ^^!. Câu 4: Encapsulate Filed? Encapsulate Field chuyển một biến từ tầm vực Public (công khai) sang tầm vực cá nhân (private) bằng thuộc tính .NET. Ví dụ bạn thêm Class2 vào Project có tên 5
  6. LuongThanhBinh – redhacker3824@Gmail.com. FirstApplication trong Solution hiện hành.Kế đến bạn khai báo biến Public và sử dụng 2 biến đó trong 2 phương thức như ví dụ sau đây: using System; using System.Collections.Generic; using System.Text; namespace A { class Class1 { public string x; public string y; public void ReadValue() { Console.Write("Enter X string: "); x = Console.ReadLine(); Console.Write("Enter Y String: "); y = Console.ReadLine(); } public void PrintValue() { Console.WriteLine("x: {0}, y: {1}", x, y); } } } Bạn nhập đoạn Code này vào rồi làm như sau: 6
  7. LuongThanhBinh – redhacker3824@Gmail.com. Một cái bảng hiện ra, bạn làm tiếp như sau: Nhấp OK, một cái bảng nữa hiện ra bạn làm tiếp như hình dưới thì ta sẽ có được đoạn Code sau đây: using System; using System.Collections.Generic; using System.Text; namespace A { class Class1 { public string x; private string y; public string strY { get { return y; } set { y = value; } } public void ReadValue() { Console.Write("Enter X string: "); x = Console.ReadLine(); Console.Write("Enter Y String: "); strY = Console.ReadLine(); } 7
  8. LuongThanhBinh – redhacker3824@Gmail.com. public void PrintValue() { Console.WriteLine("x: {0}, y: {1}", x, strY); } } } Sau khi bạn nhấn Apply thì biến y đã được thay thế bằng biến strY như trong đoạn Code mà chúng ta đã nhận được như ở trên. Nhấn Apply thì cửa sổ Preview Reference Changes-Encapsulate Field đóng lại. 8
  9. LuongThanhBinh – redhacker3824@Gmail.com. Câu 5: Extract Interface? Trong khi kỹ thuật Extract Method là trích 1 đoạn mã đang chọn thành 1 phương thức nào đó rồi thay thế đoạn mã bởi khai báo gọi chính phương thức vừa tạo ra thì kỹ thuật Extract Interface dùng để khai báo giao tiếp (Interface) cho những phương thức trong class rồi tự động khai báo kế thừa Interface đó trong Class chứa các phương thức vừa chọn. Giả sử, thêm mới Class vào Project có tên FirstApplication và đặt tên Class2. Kế đến, bạn khai báo hai biến public và sử dụng hai biến đó trong hai phương thức như ví dụ sau đây. using System; using System.Collections.Generic; using System.Text; namespace B { class LinhKien { string ten; public string Ten { get { return ten; } set { ten = value; } } float gia; public float Gia { get { return gia; } set { gia = value; } } public LinhKien() { } public LinhKien(string t, float g) { Ten = t; Gia = g; } } } Bạn làm như sau để có được Class IlinhKien.cs: 9
  10. LuongThanhBinh – redhacker3824@Gmail.com. Sau đó bạn nhấp Select All và nhấp OK: Sau khi hoàn thành thì ta sẽ có được đoạn Code sau: 10
  11. LuongThanhBinh – redhacker3824@Gmail.com. using System; namespace B { interface ILinhKien { float Gia { get; set; } string Ten { get; set; } } } Sau khi thực hiện xong thì kỹ thuật này tự động thêm khai báo kế thừa từ Interface có tên là IlinhKien.cs như sau: using System; using System.Collections.Generic; using System.Text; namespace B { class LinhKien : ILinhKien { string ten; public string Ten { get { return ten; } set { ten = value; } } float gia; public float Gia { get { return gia; } set { gia = value; } } public LinhKien() { } public LinhKien(string t, float g) { Ten = t; Gia = g; } } } Thế là hoàn thành yêu cầu của đề bài. ^^!. 11
  12. LuongThanhBinh – redhacker3824@Gmail.com. Câu 6: Biên dịch đoạn mã .cs sau ra file .exe từ tiện ích CSC.exe của Windows. Bước 1: Mở Notepad và nhập đoạn Code này vào sau đó lưu đưới đuôi .cs. Bước 2: Bạn lưu File này vào trong một ổ đĩa nào đó ví dụ như bạn bỏ nó vào ổ D: như cây thư mục sau (File Bai.cs): Bước 3: Sau đó bạn biên dịch bằng cách: Start > All Programs > Microsoft Visual Studio 2005 > Visual Studio Tools > Visual Studio 2005 Command Prompt. 12
  13. LuongThanhBinh – redhacker3824@Gmail.com. Như hình sau: Một màn hình đen thui hiện ra, bạn làm như hình dưới, để biết tham số các lệnh thì bạn làm như sau (Bạn nhập CSC /?, window sẽ cho bạn biết tất cả các tham số dòng lệnh): 13
  14. LuongThanhBinh – redhacker3824@Gmail.com. Và bây giờ bạn chỉ việc nhập vào lệnh như sau: Thế là bạn đã biết cách biên dịch từ file .cs ra file .exe như thế đó. ^_^!. Câu 7: Tầm vực của biến? Tầm vực của biến phụ thuộc vào một trong từ khóa Public, Protected, internal, private bạn chỉ định trước tên biến.Mặc định không khai báo từ khóa trước biến nằm ngoài phương thức là Private. Lưu ý, các từ khóa public, protected, internal, private có thể sử dụng các phương thức hay hằng, enum. Từ khóa Public. Nếu biến khai báo có từ khóa là public thì không giới hạn quyền truy cập từ bên ngoài đến chúng. Chẳng hạn, bạn khai báo biến qtty và price trong Class1 như ví dụ sau đây: using System; using System.Collections.Generic; using System.Text; namespace Public { class Class1 { //Khai báo hai biến public. public int qtty = 0; public float price = 0; float tax = 0; } } Sau đó khai báo và khởi tạo đối tượng Class1 rồi truy cập đến hai biến qtty và price trong phương thức Main như ví dụ 4-11. 14
  15. LuongThanhBinh – redhacker3824@Gmail.com. using System; using System.Collections.Generic; using System.Text; namespace Public { class Program { static void Main(string[] args) { //Khai báo khởi tạo đối tượng Class 1. Class1 cls = new Class1(); //Truy cập đến hai biến public. cls.qtty = 10; cls.price = 10.5f; //In giá trị hai biến Console.WriteLine("Qty = {0}, Price = {1}", cls.qtty, cls.price); Console.WriteLine("Amount = {0}", cls.qtty * cls.price); Console.ReadLine(); } } } Câu 8: Từ khóa Protected? Nếu sử dụng từ khóa protected trước biến thì giới hạn quyền truy cập trong class và những class kế thừa class chứa đựng biến đó. Ví dụ, bạn khai báo biến amount và protected trong Class1. Kế đến bạn khai báo phương thức Sum để tính toán giá trị rồi gán vào vho biến tax và amount như ví dụ dưới đây: Khởi tạo biến Class1: using System; using System.Collections.Generic; using System.Text; namespace Public { public class Class1 { public int qtty = 0; public float Price = 0; float tax = 0; //Khai báo biến tầm vực là protected. 15
  16. LuongThanhBinh – redhacker3824@Gmail.com. protected float amount = 0; public void sum() { tax = qtty * Price * 0.1f; //gán giá trị cho biến. amount = qtty * Price - tax; Console.WriteLine("Tax = {0}", tax); Console.ReadLine(); } } } Khởi tạo biến Class2: using System; using System.Collections.Generic; using System.Text; namespace Public { class Class2:Class1 { public void print() { Console.WriteLine("Amount = {0}", amount); } } } using System; using System.Collections.Generic; using System.Text; namespace Public { class Class2:Class1 { public void print() { Console.WriteLine("Amount = {0}", amount); } } } Gọi hàm ra ở lớp Program: using System; using System.Collections.Generic; 16
  17. LuongThanhBinh – redhacker3824@Gmail.com. using System.Text; namespace Public { class Program { static void Main(string[] args) { //Khai báo và khởi tạo đối tượng Class2 Class2 cls = new Class2(); //Truy cập 2 biến public trong Class1 cls.qtty = 10; cls.Price = 10.5f; //In giá trị của hai biến. Console.WriteLine("Qty = {0}, Price = {1}", cls.qtty, cls.Price); //Gọi phương thức trong Class1. cls.sum(); //Gọi phương thức trong Class2. cls.print(); Console.ReadLine(); } } } Thế là xong yêu cầu của bài toán. ^^!. Câu 9: Từ khóa Internal? Giới hạn truy cập trong Assembly hiện hành. Ví dụ, trong thư mục internalvariable bạn thêm tập tin Class1.cs và khai báo biến Age như sau: Class1.cs: using System; using System.Collections.Generic; using System.Text; namespace Internal { class Class1 { internal int Age = 30; } } 17
  18. LuongThanhBinh – redhacker3824@Gmail.com. Kế đến, bạn biến dịch Class1 này ra thành tập tin .DLL từ cửa sổ Command Prompt như hình dưới: Sau đó tạo mới tập tin Class3.cs trong thư mục internalvariable ròi khai báo và khởi tạo đối tượng Class1 như ví dụ dưới đây: using System; using System.Collections.Generic; using System.Text; namespace Internal { class Program { static void Main(string[] args) { Class1 cls = new Class1(); cls.Age = 35; Console.WriteLine("Age = {0}", cls.Age); Console.ReadLine(); } } } Nếu ta truy xuất File .DLL thì nó sẽ báo lỗi ngay vì để truy cập vào biến internal thì bản thân Class khai báo sử dụng Class chứa biến đó cùng chung 1 Assembly (tức có nghĩa là sử dụng chung một file .DLL). Câu 10: Từ khóa Private? Từ khóa Private ấn định biến cho phép truy cập chỉ bên trong Class khai báo nó.Ngoài ra, nếu biến khai báo bên trong Class không ấn định 1 trong 4 từ khóa public, private, protected, hay internal thì mặc định là Private. Chẳng hạn bạn khai báo biến qtty và price trong Class1 của Project mang tên privatevariable, rồi sau đó định nghĩa phương thức Sum để tính giá trị tax và amount như ví dụ dưới đây`: Class1.cs: using System; using System.Collections.Generic; using System.Text; 18
  19. LuongThanhBinh – redhacker3824@Gmail.com. namespace Private { class Class1 { //Khai báo biến Private private int qtty = 100; //Mặc định là private float price = 20.5f; public void Sum() { float tax = qtty * price * 0.1f; float amount = qtty * price - tax; Console.WriteLine("Tax = {0}", tax); Console.WriteLine("Amount = {0}", amount); } } } Program.cs: using System; using System.Collections.Generic; using System.Text; namespace Private { class Program { static void Main(string[] args) { //Khai báo và khởi tạo đối tượng Class1. Class1 cls = new Class1(); cls.Sum(); Console.ReadLine(); } } } Ta thấy thì khi khai báo ở lớp Program.cs thì không thể truy xuất trực tiếp được biến Private (Hình dưới ta không thấy biến qtty và biến price đâu cả). 19
  20. LuongThanhBinh – redhacker3824@Gmail.com. Câu 11: Biến cục bộ: Biến cục bộ là biến có tầm vực ngay bên trong phương thức mà nó được khai báo. Chẳng hạn, bạn khai báo hai biến cục bộ có tên tax và amount trong phương thức Main như ví dụ dưới đây. using System; using System.Collections.Generic; using System.Text; namespace BienCucBo { class Program { //Khai báo phương thức Sum. public void Sum() { Class1 cls = new Class1(); //Khai báo 2 biến cục bộ. float tax = cls.qtty * cls.price * 0.1f; float amount = cls.qtty * cls.price - tax; Console.WriteLine("Tax = {0}", tax); Console.WriteLine("Amount = {0}", amount); } //Khai báo phương thức Main() static void Main(string[] args) { //Khai báo và khởi tạo đối tượng Program. Program cls = new Program(); //Gọi phương thức Sum. cls.Sum(); Console.ReadLine(); } //Khai báo biến Private private int qtty = 100; float price = 20.5f; } } Câu 12: Từ khóa Static? Từ khóa Static sử dụng cho Class, phương thức (Method), Constructor, thuộc tính (Property), biến cố (Event) và biến. Bạn có thể tìm hiểu chi tiết về từ khóa static dùng cho class trong chương trình bày lớp, phương thức và thuộc tính. Trong phần này chúng ta chỉ tìm hiểu từ khóa static dùng khi khai báo biến. 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2