Thứ Hai, 24 tháng 3, 2014

Sinh viên đã bắt đầu biết tóm tắt thông tin học được ở LTHĐT

Tuy nhiên còn nhiều chỗ trình bày chưa sát với ý câu hỏi. Dưới đây là 1 bài trình bày của 1 SV: Lập trình hướng đối tượng
1. Class (mô tả phân loại đối tượng) - Lớp là một khái niệm trừu tượng nhằm mô tả và phân loại một tập hợp các đối tượng như nhau về thuộc tính và phương thức. - Các thành phần cơ bản: + Class name (tên) + Constructor(khởi tạo) + Attributes(Thuộc tính) + Properties(Thuộc tính) + Method(Phương thức) - Việc đặt tên một class cũng lên có một số chú ý như sau: + Tên class phải là một danh từ. + Không thể để trong trường hợp lẫn lộn tên, kí tự đầu tiên có thể viết Hoa. + Không thể trùng từ khóa. + Không thể bắt đầu với một số. - Ví dụ: Class abc { private int a; public int A; { get{return a;} set{a=value;} .... } }

2. Object (đối tượng) - Đối tượng phản ánh một thực thể có thực, mô tả được mọi hiện thực khách quan trên thực tế. - Gồm 2 TP chính: + Đặc điểm (thuộc tính) + Hành vi (phương thức) Ví dụ: HocSinh hs = new HocSinh();

3. Field ( trường dữ liệu trong Class) - Dùng để khai báo 1 đối tượng - Tên trường thường viết thường - Tên biến truyền vào thường viết in hoa - Từ khóa Private, public Ví dụ: Private int x;

4. Properties (Thuộc tính) - Thuộc tính: thông tin mô tả đối tượng - Kí hiệu: Hình vuông có bàn tay (trong C#) Ví dụ: Class HocSinh Private string ten; Private int tuoi;

5. Method ( phương thức) - Là hành động của đối tượng, tác động ra bên ngoài(chủ động), hoặc bị bên ngoài tác động vào(bị động) - Kí hiệu: Hình thoi màu hồng(trong C#) - Phương thức phổ biến: Mặc định và truyền biến + Mặc định: public TênĐT() + Truyền biến: public tênĐT (danh sách tham số truyền) { Tên ĐT= tham số; } Ví dụ: n.Tostring(); // Tostring: cung cấp chuỗi thể hiện của ĐT

6. Event (sự kiện) Sự kiện là hành động nào đó được thực hiện khi có sự thay đổi trạng thái của đối tượng được tác động bởi người dùng hoặc hệ thống Ví dụ: Event load form

7. Câu lệnh ở chế độ Console 1 số câu lênh cơ bản: _ Console.Write(“”); //Nhập _ Console.WriteLine(“”); _ Console.ReadLine() ; // Xuống dòng _ Console.ReadKey();// Dừng màn hình

8. Window form Có thể tạo nhiều Form trên cùng 1 dự án Các yếu tố cơ bản cần có đối với 1 Forms: + Name: Tên + Text + Windows State: Trạng thái: Normal, Minimized; Maximized

9. Tool box - Có rất nhiều công cụ trong ToolBox, cần lựa chọn cho hợp lý đối với từng bài cụ thể + Textbox + Label + Linklabel + Button + Checkbox + radioButton + listbox + picturebox + dataGridview + panel...

10. Message box (tin nhắn thông báo cho người dùng) - Có 3 cách dùng cơ bản: + MessageBox + MessageBoxbutton + MessageBoxIcon. Ví dụ: If ( MessageBox.Show( “Bạn có muốn thoát không”,”Thông báo”,MessageBoxbutton.Okcancel,MessageBoxIcon.information)==dialogResult.OK)

11. Kế thừa - Cho phép xây dựng lớp mới được thừa hưởng các thuộc tính của lớp đã có. - Tạo ra 1 lớp mới có đầy đủ tất cả những tính chất và phương thức của 1 lớp đã có mà không phải viết lại bất cứ 1 dòng lệnh nào . Ví dụ: public class Book:product { } // Khai báo lớp book có tính chất public, được dẫn xuất từ lớp Product

12. SQL server - Công nghệ lưu trữ dữ liệu dựa trên ngôn ngữ SQL

13. Server name - Tên máy chủ

14. Data Acess - Kết nối với CSDL và thực thi lệnh SQL - Thực thi xong lớp này thường Build để thu được file Acess.dll để tiếp tục làm lớp tiếp theo Ví dụ: public class Data { public SqlConnection getConnect(){...} //kết nối với CSDL public DataTable GetTable(string sql) {...} //trả về 1 bảng public void ExecuteNonQuery(sting sql) {...} // lệnh thực thi 1 câu lệnh SQL }

15. Data sousce - Nguồn dữ liệu - Ràng buộc dữ liệu trên điều khiển của Windows Forms - Thường liên quan đến dataGridView, ListBox Ví dụ: this.dataGridView1.DataSource = dt;

16. DataAdapter - Thích ứng DL - Điền vào một DataTable với một bảng từ cơ sở dữ liệu SQL Server của bạn. Ví dụ: SqlDataAdapter ad = new SqlDataAdapter(sql, conn);

17. DataTable - Bảng DL: để lưu trữ dữ liệu từ bất cứ nguồn nào - Với nó chúng ta làm việc với các đối tượng từ bộ nhớ và hiển thị kết quả trong bảng điều khiển như DataGridView Ví dụ: public DataTable GetTable(string sql) { DataTable dt = new DataTable(); Return dt; } //Trả về 1 bảng

18. Business Logic Layer - Xử lý lệnh sql và gọi lớp 1 thực thi - Khi đã thực hiện xong lớp 1 và thu được file Acess.dll - Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớp DataAccess cung cấp, và cung cấp các dịch vụ cho lớp Presentation Ví dụ: public class DT { Data da = new Data(); public DataTable ShowDT() {...} //Định nghĩa hàm ShowDT() kiểu DataTable public void InsertDT (string ml, string tl) {...}//Thực thi 1 câu lệnh chèn vào bảng public void UpdateDT(string ml1, string ml, string tl) {....}//Thực thi câu lệnh cập nhật public void DeleteDT(string ml) {....} //Thực thi xóa lớp public DataTable lookDT(string dk){...} // Thực thi tìm kiếm } // cấu trúc TQ của lớp 2

19. Presentation Layer (Tầng trình diễn) - Giao diện người dùng thao tác gọi hàm lớp 2 xử lý - Khi làm xong 2 lớp DAL và BLL, đã Build xong để tham khảo. Lớp này không nên sử dụng trực tiếp các dịchvụ của lớp Data Access mà nên sử dụng thông qua các dịch vụ của lớp Business Logic vì khi sử dụng trực tiếp như vậy, có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cần phải có. Ví dụ: using BusinessLogic; //Sử dụng các giá trị thiết lập ở lớp 2 đã tạo namespace NB { public partial class : Form:Form1 { public frmNB() { InitializeComponent(); } private void frmNB_Load(object sender, EventArgs e) { }

20. SQL:select * from - Lựa chọn 1 đối tượng trong sql - Phải gọi đúng giá trị biến nếu không sẽ báo lỗi Ví dụ: Public DataTable ShowLop() { string sql; sql = "Select * from Lop"; }

21. SQL: insert into - Chèn 1 bản ghi vào bảng thuộc CSDL - Phải viết đúng tên bản ghi cần chèn giống như trong CSDL đã tạo Ví dụ: public void InsertLop(string ml, string tl, string time, string capacity) { string sql = "insert into Diem values('" + Diem + "',N'" + MaSV + "', N'" + MaMH + "', N'"; da.ExecuteNonQuery(sql); //lệnh thực thi không trả về bảng đã viết bên lớp 1 //N phòng trường hợp lỗi font tiếng \việt }

22. SQL: update.. - Chỉnh sử, cập nhật, sửa đổi dữ liệu trong CSDL - Khóa chính không phải là đối tương tác động chính Ví dụ: public void UpdateDiem(string maMH, string maSV, string Diem) { string sql = "update Diem set maMH'" + maMH + "', Diem=N'" + Diem + "' where maSV'" + maSV + "'"; da.ExecuteNonQuery(sql); }

23. SQL: Delete - Hàm xóa DL - Tác động chủ yếu đến khóa chính Ví dụ: public void DeleteDiem(string MaSV) { string sql = "delete diem where MaSV=N'" + maSv + "'"; da.ExecuteNonQuery(sql); }

24. Set - Thiết lập dữ liệu Ví dụ: set { Thuộc tính = giá trị; } private int a; public int A set { a = value; }

25. Get - Lấy dữ liêu Ví dụ: get { return Thuộctính; } private int a; public int A get { return a; }

26. Contructor - Khởi tạo: Phương thức đặc biệt trong lớp. - Được gọi khi đối tượng được tạo. - Cùng tên với tên lớp . - Không có giá trị trả về. Ví dụ: Public Student (string name) { Name=sname; }

27. Decontructor - Hủy khởi tạo: Được gọi tự động khi đối tượng được hủy - Tên của hàm hủy trùng tên với lớp, có dấu ~ phía trước. - Hàm hủy không nhận tham số bên trong nó.

28. Từ khóa public - Từ khóa để chỉ phạm vi truy cập đến nó. - Được sử dụng trong nội bộ lớp và lớp con kế thừa nó. - Dùng tương đương với từ khóa protected Public class Lop () { }

29. Từ khóa private - Từ khóa để bảo vệ quyền riêng tư - Chỉ sử dụng trong nội bộ lớp. - Thành viên trong 1 lớp A đươc đánh dấu là private thì chỉ được truy cập bởi các phương thức của lớp A Ví dụ: Private string NV() { }

Cấu trúc báo cáo NCKH Sinh Viên

CẤU TRÚC BÁO CÁO KẾT QUẢ ĐỀ TÀI NCKH SV

I. Cấu trúc tổng quát

Bìa 1
Bìa 2
Mục lục
Mục lục hình
Mục lục bảng
Chữ viết tắt
Phần mở đầu
Chương 1
Chương 2 ...
Kết luận
Tài liệu tham khảo

II. Cấu trúc Phần mở đầu

PHẦN MỞ ĐẦU
1. Tên đề tài: Tên đề tài được ghi trong quyết định chính thức

2. Mã số: Mã số được ghi trong QĐ chính thức

3. Nhóm SV nghiên cứu: Tên từng thành viên trong nhóm, đơn vị lớp

4. Giáo viên hướng dẫn: Học hàm, học vị, họ tên, đơn vị công tác

5. Giới thiệu khái quát về vấn đề nghiên cứu:
 - Vấn đề nghiên cứu... thuộc lĩnh vực nào, mục tiêu nghiên cứu là gì? Vấn đề nghiên cứu tác động vào đâu, mang lại lợi ích gì cho lý thuyết, thực tiễn và học tập?
- Những vấn đề liên quan: Để thực hiện được đề tài, cần nghiên cứu đến những vấn đề gì?
- Giới hạn phạm vi: Để giải quyết những vấn đề liên quan trên cần thời gian, không gian như thế nào? Trong khuôn khổ giới hạn của một đề tài NCKH SV, thì cần giới hạn như thế nào là phù hợp?
- Những kết quả cần phải đạt được: Về lý thuyết cần thực hiện những vấn đề gì? Về sản phẩm phần mềm, phần cứng (nếu có) cần phải đạt được là gì?

6. Đối tượng và tài liệu nghiên cứu - Để thực hiện được những kết quả nêu trên nhóm nghiên cứu đã tham khảo trên những tập tài liệu gì? nguồn tìm kiếm ở đâu, hoặc do ai cung cấp? - Đã khảo sát thực tế ở đâu (nếu có)?

7. Phân công nhiệm vụ trong nhóm nghiên cứu - Ai? Làm gì trong từng kết quả nghiên cứu 8. Những vấn đề trình bày trong báo cáo kết quả đề tài NC (Kết quả chính thức của đề tài nghiên cứu) - Chương 1 trình bày cái gì? - Chương 2 trình bày cái gì? ....

Thứ Ba, 4 tháng 3, 2014

Khởi tạo và truyền giá trị từ chương trình vào lớp - Bài toán Circle

a) Định nghĩa một lớp Circle với trường dữ liệu bán kính r là số nguyên. Trong đó:
- Định nghĩa thuộc tính nhận và lấy dữ liệu.
- Xây dựng phương thức khởi tạo dữ liệu mặc định
- Xây dựng phương thức khởi tạo dữ liệu truyền biến
- Xây dựng hàm tính chu vi hình tròn
- Xây dựng hàm tính diện tích hình tròn
b) Tại chương trình chính:
- Định nghĩa 2 đường tròn C và D
- Nhập vào bán kính R1 và R2 của hai đường tròn
- Khởi tạo giá trị cho đường tròn C theo phương thức khởi tạo mặc định
- Tính và in ChuVi và DienTich của đường tròn C ra màn hình
- Khởi tạo giá trị cho đường tròn D theo phương thức khởi tạo truyền biến

- Tính và in ChuVi và DienTich của đường tròn D ra màn hình

Download Coding: http://www.mediafire.com/download/7eydtoskmaovm3j/LopCircle.rar

Nội dung coding

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LopCircle
{
    class Circle
    {
        private int r;

        //Thuộc tính để lấy bán kính và đặt giá trị bán kính
        public int R
        {
            get { return r; }
            set { r = value; }
        }

        //Khởi tạo mặc định
        public Circle()
        {
        }

        //Khởi tạo truyền biến
        public Circle(int R)
        {
            r = R;
        }

        //Phương thức tính ChuVi
        public double ChuVi()
        {
            return Math.PI * 2 * r;
        }

        //Phương thức tính Diện tích
        public double DienTich()
        {
            return Math.PI * r * r;
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            //Dùng hàm khởi tạo truyền tham biến
            int R1;
            Console.Write("Nhap ban kinh R1 =");
            R1 = int.Parse(Console.ReadLine());
            Circle c;
            c = new Circle(R1);
            Console.WriteLine("Chu vi = {0}",c.ChuVi());
            Console.WriteLine("Dien tich = {0}", c.DienTich());
            Console.ReadKey();

            //Dùng hàm khởi tạo mặc định không truyền tham biến
            int R2;
            Console.Write("Nhap ban kinh R2 =");
            R2 = int.Parse(Console.ReadLine());
            Circle d;
            d = new Circle();
            d.R = R2;
            Console.WriteLine("Chu vi = {0}", d.ChuVi());
            Console.WriteLine("Dien tich = {0}", d.DienTich());
            Console.ReadKey();
        }
    }
}

Thứ Hai, 3 tháng 3, 2014

Tìm hiểu hàm khởi tạo trong lập trình class

Ví dụ người ta định nghĩa một class về hình vuông như sau:
class HinhVuong
{
private int a;
public int A
{
set {a = value;}
get{value = a;}
}

public HinhVuong(int A)
{
a = A;
}

public void ChuVi()
{
}

public void DienTich()
{
}
}

Hãy giải thích từng đoạn trên dùng để làm gì? Lấy ví dụ minh họa và thực hiện trong chương trình chính sử dụng class để minh họa cho những nhận định của mình.



Class in c# (30-31-32)

Bài 32.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ct24_kethua
{
classtau
    {
publicint nhienlieu;
public tau()
        {
            nhienlieu = 10;
        }
public tau(int x)
        {
            nhienlieu = x;
        }
//Hàm đốt nhiên liệu sẽ có kế thừa từ lớp tàu chiến
publicvoid dotnhienlieu(int x)
        {
            nhienlieu=nhienlieu-x;
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Ke thua, su dung ham base de lua chon ham tao
namespace ct24_kethua
{
classtauchien:tau//tàu chiến kế thừa từ tàu
{
publicint sung;
publicint dan;
public tauchien(int x, int y, int z):base(z)
{
            sung = x;
            dan = y;
        }
//Ham ban se ke thua ham dotnhienlieu tu lop Co so
publicvoid ban()
        {
base.dotnhienlieu(5);
            dan = dan - 1;
}
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Ke thua, su dung ham base de lua chon ham tao
namespace ct24_kethua
{
classProgram
    {
staticvoid Main(string[] args)
{
tau a = newtau();
tauchien b = newtauchien(1,500,200); //dùng hàm khởi tạo
Console.WriteLine("----Tau ban dau-------");
Console.WriteLine(a.nhienlieu);
Console.WriteLine("----Tau Chien-------");
Console.WriteLine("sung={0}",b.sung);
Console.WriteLine("dan={0}",b.dan);
Console.WriteLine("nhienlieu={0}",b.nhienlieu);
            b.ban();
Console.WriteLine("----Tau chien sau khi ban-------");
Console.WriteLine("sung={0}", b.sung);
Console.WriteLine("dan={0}", b.dan);
Console.WriteLine("nhienlieu={0}", b.nhienlieu);

Console.ReadKey();

        }
    }
}

Bài 33.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace _32.Class_TauThuy_Dahinh
{
publicpartialclassForm1 : Form
    {
public Form1()
        {
            InitializeComponent();
        }
classtau//Lớp dẫn xuất
        {
publicvirtualvoid Laythongtin()
            {
MessageBox.Show("Đây là tàu lớp cơ sở ");
            }
        }
classtauchien : tau//kế thừa
        {
publicoverridevoid Laythongtin()
            {
MessageBox.Show("Đây là tàu chiến");
            }
        }

classtauchohang : tau//kế thừa
        {
publicoverridevoid Laythongtin()
            {
MessageBox.Show("Đây là tàu chờ hàng");
            }
        }
privatevoid Form1_Load(object sender, EventArgs e)
        {
this.txtMinhHoa.Text = "Ba lớp (tàu,tàu chiến, tàu chở hàng) đều chứa hàm Laythongtin(). ";
this.txtMinhHoa.Text = this.txtMinhHoa.Text + "Lớp tàu chiến kế thừa Lớp tàu, Lớp tàu chở hàng kế thừa Lớp tàu. " ;
this.txtMinhHoa.Text = this.txtMinhHoa.Text + "Định nghĩa một mảng tàu, và gán cho các phần tử của mảng là các loại tàu khác nhau. ";
this.txtMinhHoa.Text = this.txtMinhHoa.Text + "Gọi thực hiện mangtau[i].LayThongtin() cho kết quả đúng theo loại tàu. ";
this.txtMinhHoa.Text = this.txtMinhHoa.Text + "Tính đa hình đã được thể hiện.";
string filename;
            filename = "Form1.cs";
            txtContent.Text = File.ReadAllText(filename);
        }
privatevoid btnThucHien_Click(object sender, EventArgs e)
{
tau[] mangtau = newtau[3];
            mangtau[0] = newtau();
            mangtau[1] = newtauchien();
            mangtau[2] = newtauchohang();
for (int i = 0; i < 3; i++)
            {
                mangtau[i].Laythongtin();
            }
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace _32.Class_TauThuy_Dahinh
{
staticclassProgram
    {
///
/// The main entry point for the application.
///

        [STAThread]
staticvoid Main()
        {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(newForm1());
        }
    }
}


Bài 34.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BaiThucHanhLop
{
classStudent
    {
privatestring _hoTen;
privateint _tuoi;
privatedouble _diemToan;
privatedouble _diemVan;
privatedouble _dtb;
//Hàm khởi tạo không có tham số
public Student()
        {
            HoTen = "";
            DiemVan = 0;
            DiemToan = 0;
            Dtb = 0;
        }
//Các phương thức Properties để get/set giá trị cho các thuộc tính
publicstring HoTen
        {
get { return _hoTen; }
set { _hoTen = value; }
        }
publicint Tuoi
        {
get { return _tuoi; }
set { _tuoi = value; }
        }
publicdouble DiemToan
        {
get { return _diemToan; }
set { _diemToan = value; }
        }
publicdouble DiemVan
        {
get { return _diemVan; }
set { _diemVan = value; }
        }
publicdouble Dtb
        {
get { returnMath.Round(((DiemToan + DiemVan) / 2), 2); }
set { _dtb = value; }
        }
//Các phương thức nhập/xuất dữ liệu                   

publicvoid nhap()
        {
Console.Write(" \t -Nhap ho ten:");
            HoTen = Console.ReadLine();
Console.Write(" \t -Nhap diem toan:");
Double temp;
temp = double.Parse(Console.ReadLine());
if (temp > 10 || temp < 0)
{
Console.WriteLine(" \t !!! Diem phai nam trong khoang 0 -> 10");
Console.Write(" \t -Nhap lai diem toan:");
                temp = double.Parse(Console.ReadLine());
            }
            DiemToan = temp;

Console.Write(" \t -Nhap diem van:");
            temp = double.Parse(Console.ReadLine());
if (temp > 10 || temp < 0)
            {
Console.WriteLine(" \t -Diem phai nam trong khoang 0 -> 10");
Console.Write(" \t -Nhap lai diem Van:");
                temp = double.Parse(Console.ReadLine());
            }
            DiemVan = temp;

        }
publicvoid xuat()
{
Console.WriteLine("{0,-15}{1,-15}{2,-15}{3,-15}", HoTen, DiemToan, DiemVan, Dtb);
        }
    }

classProgram
    {
publicstaticvoid Main()
        {
int n;
Console.Write(" Nhap so luong hoc sinh: ");
            n = int.Parse(Console.ReadLine());

Student[] _arrStudent = newStudent[n];
for (int i = 0; i < n; i++)
            {
Console.WriteLine(" Nhap thong tin sinh vien thu: " + (i + 1).ToString());
                _arrStudent[i] = newStudent();
                _arrStudent[i].nhap();
            }

Console.WriteLine(" Danh sach hoc sinh: ");
Console.WriteLine("{0,-15}{1,-15}{2,-15}{3,-15}", "Ho Ten", "Diem Toan", "Diem Van", "DTB");

for (int i = 0; i < n; i++)
            {
                _arrStudent[i].xuat();
            }
Console.ReadLine();
        }
    }

}

Class in c# (2)

Bài 29. Khởi tạo mặc định và khởi tạo truyền tham biến

1. Tạo một lớp Date gồm:
- Trường số liệu: ba trường số nguyên: dd, mm, yy
- Phương thức: gồm 2 phương thức khởi tạo khác nhau
+ Khởi tạo mặc định, gán sẵn số liệu là 05/12/69.
+ Khởi tạo truyền biến thông qua các biến dd, mm, yy
2. Tại chương trình chính (dạng windows Forms)
- Thiết kế nút lệnh để thực hiện khởi tạo mặc định, hiện kết quả ra textbox.
- Thiết kế nút lệnh để thực hiện khởi tạo các giá trị ngày tháng năm thông qua 3 textbox do người dùng nhập giá trị thực. Kết quả hiện ra dữ liệu ở textboxkq.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _29.Class_KhoiTao1
{
classDate
    {
publicint dd, mm, yy;
public Date(): this(5, 12, 1969)
        {
        }
public Date(int dd, int mm, int yy)
        {
            khoitao(dd, mm, yy);
        }
publicvoid khoitao(int dd, int mm, int yy)
        {
this.dd = dd;
this.mm = mm;
this.yy = yy;
        }
    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace _29.Class_KhoiTao1
{
publicpartialclassForm1 : Form
    {
public Form1()
        {
            InitializeComponent();
        }

privatevoid btnDefault_Click(object sender, EventArgs e)
        {
Date a = newDate();
this.txta.Text = a.dd + "/" + a.mm + "/" + a.yy;
        }

privatevoid btnFunction_Click(object sender, EventArgs e)
        {
Date b = newDate(15, 12, 2014);
this.txtb.Text = b.dd + "/" + b.mm + "/" + b.yy;
        }

privatevoid button1_Click(object sender, EventArgs e)
        {
            Close();
        }

privatevoid Form1_Load(object sender, EventArgs e)
        {

        }
    }
}


Bài 30. Minh họa sự kế thừa, minh họa tính chất private và public các trường dữ liệu trong quá trình kế thừa.

1. Tạo lớp tàu có cấu trúc
classtau
    {
//Các trường dữ liệu
publicstring hangsx;
publicint nhienlieu;

//Khởi tạo mặc định
public tau()
        {
            hangsx = "VinaLine";
            nhienlieu = 10;
}
    }

2. Tạo lớp tàu chiến, kế thừa lớp tàu:
classtauchien:tau
    {   //Khai báo trường dữ liệu
//2 trường private và 1 trường public, các trường khác kế thừa từ lớp tau
//trường private là trường riêng, nên muốn truy cập đến
//2 trường này cần phải định nghĩa hàm thuộc tính có chứa get và set
//2 trường riêng này các lớp dẫn xuất không kế thừa được
privatestring sung;
privatestring dan;
publicstring chieudai;

//thuộc tính Sung để tác động đến trường sung
publicstring Sung
        {
set { sung = value; }
get { return sung; }
        }

//thuộc tính Dan để tác động đến trường dan
publicstring Dan
        {
set { dan = value; }
get { return dan; }
        }

//Khởi tạo giá trị mặc định của tàu chiến
public tauchien()
        {
            sung = "12ly7";
            dan = "Lien thanh";
            chieudai = "100m";
        }
    }

3. Tạo lớp tàu chở hàng, kế thừa lớp tàu chiến
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ct24_kethua
{
classtauchohang:tauchien
    {
//Gồm 1 trường dữ liệu
//Các dữ liệu khác kế thừa từ lớp tauchien
publicint noichuahang;
public tauchohang()
{
        noichuahang=1500;
    }

    }
}

4. Tại chương trình chính thực hiện
classProgram
    {
staticvoid Main(string[] args)
{
tau a = newtau();
tauchien b = newtauchien();
tauchohang c = newtauchohang();
Console.WriteLine("Tau thong thuong:");
Console.WriteLine("Hang san xuat: {0}, Nhien lieu mac dinh {1}", a.hangsx, a.nhienlieu );
Console.WriteLine("------------------------");

//Lớp tàu chiến
//Do trường sung va dan là 2 trường private nên muốn lấy dữ liệu phải thông qua 2 phương thức Sung và Dan
//hangsx và nhienlieu kế thừa từ lớp tau sang
Console.WriteLine("TAU CHIEN:");
Console.WriteLine("Hang san xuat: {0}, Nhien lieu mac dinh {1}", b.hangsx,b.nhienlieu);
Console.WriteLine("Sung: {0}, Dan: {1}", b.Sung, b.Dan);
Console.WriteLine("Chieu dai: {0} ", b.chieudai);
Console.WriteLine("------------------------");


//Lớp tàu chở hàng
//c.chieudai kế thừa từ lớp tàu chiến
//c.nhienlieu và c.hangsx kế thừa bắc cầu thông qua lớp tàu chiến đến lớp tàu.
Console.WriteLine("TAU CHO HANG:");
Console.WriteLine("Hang san xuat: {0}, Nhien lieu mac dinh {1}", a.hangsx,c.nhienlieu);
Console.WriteLine("Noi chua hang: {0}", c.noichuahang);
Console.WriteLine("Chieu dai: {0} ", c.chieudai);


Console.ReadKey();

        }
    }


Bài 31.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ct24_kethua
{
classtau
    {
publicint nhienlieu;
publicstring hangsx;
public tau()
        {
            hangsx = "VinaLine";
            nhienlieu = 10;
}
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ct24_kethua
{
classtauchien:tau
    {
publicstring sung;
publicstring dan;
public tauchien()
        {
            sung = "12ly7";
            dan = "Lien thanh";
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ct24_kethua
{
classtauchohang:tauchien
    {
publicint noichuahang;
public tauchohang()
    {
        noichuahang=1500;
    }

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ct24_kethua
{
classProgram
    {
staticvoid Main(string[] args)
{
tau a = newtau();
tauchien b = newtauchien();
tauchohang c = newtauchohang();
Console.WriteLine("Tau thong thuong:");
Console.WriteLine("Hang san xuat: {0}, Nhien lieu mac dinh {1}", a.hangsx, a.nhienlieu );
Console.WriteLine("------------------------");
Console.WriteLine("TAU CHIEN:");
Console.WriteLine("Hang san xuat: {0}, Nhien lieu mac dinh {1}", b.hangsx,b.nhienlieu);
Console.WriteLine("Sung: {0}, Dan: {1}", b.sung, b.dan);
Console.WriteLine("------------------------");
Console.WriteLine("TAU CHO HANG:");
Console.WriteLine("Hang san xuat: {0}, Nhien lieu mac dinh {1}", a.hangsx,c.nhienlieu);
Console.WriteLine("Noi chua hang: {0}", c.noichuahang);
Console.ReadKey();

        }
    }

}