using System;
using System.Collections.Generic;
using System.Text;
using QuanLySinhVien;
namespace MinhHoaDaHinh
{
class Program
{
static void Main(string[] args)
{
Nguoi[] ng = new Nguoi[5];
ng[0] = new Nguoi("Nguyen");
ng[1] = new SinhVien("Sinh vien", 1, 2.4, 10);
ng[2] = new Nguoi("Van");
ng[3] = new NhanVien("Nguyen Van", 2.3);
ng[4] = new NhanVien("dd", 4);
foreach (Nguoi x in ng)
x.HienThi();
}
}
}
Minh hoa ke thua:
using System;
using System.Collections.Generic;
using System.Text;
namespace MinhHoaKeThua
{
class Nguoi
{
protected string hoTen;
#region Hàm khởi dựng
public Nguoi(string name)
{
hoTen = name;
}
public Nguoi()
{
hoTen = "!!!";
}
#endregion
virtual public void HienThi()
{
Console.WriteLine("Nguoi - ten = {0}", hoTen);
}
}
class NhanVien : Nguoi
{
double heSoLuong;
public NhanVien(string ht, double hsl)
:base(ht)
{
this.heSoLuong = hsl;
}
/// <summary>
/// Muốn thay đổi hành vi của lớp > new
/// </summary>
override public void HienThi()
{
Console.WriteLine("Nhan vien - ten {0}, he so luong: {1}",
this.hoTen, this.heSoLuong);
}
}
class Program
{
static void Main(string[] args)
{
Nguoi nva = new Nguoi("Nguyen A");
nva.HienThi();
NhanVien x = new NhanVien("Tran Van", 1.23);
x.HienThi();
#region Tính chất gắn kết sớm (early binding)
#region Giải thích
/// y nắm giữ 1 NhanVien nhưng không HienThi() theo cách của
/// NhanVien
///
/// Khi khai báo y là một Nguoi thì y.HienThi() được xác
định
/// là HienThi theo cách của Nguoi
///
/// Đa hình = sử dụng phương thức DỰA THEO KIỂU GIÁ TRỊ
/// MÀ ĐỐI TƯỢNG ĐANG NẮM GIỮ lúc thực thi chương trình
#endregion
//Khai báo y là 1 đối tượng Nguoi
Nguoi y;
//Khởi tạo giá trị cho y
y = new NhanVien("Nguyen Van Y", 1.11);
//Hiển thị thông tin của y
y.HienThi();
y = nva; // Giá trị y đang tham chiếu bây giờ có kiểu là
Nguoi
y.HienThi();
#endregion
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace MinhHoaREFOUT
{
class Program
{
static void Main(string[] args)
{
Diem p = new Diem(10.12, 12.0);
int x = 1, y = 2;
Console.WriteLine("Truoc khi goi ham thanh phan: ");
Console.WriteLine("\tx = {0}", x);
Console.WriteLine("\ty = {0}", y);
p.LayToaDo(ref x, ref y);
Console.WriteLine("Sau khi goi ham thanh phan: ");
Console.WriteLine("\tx = {0}", x);
Console.WriteLine("\ty = {0}", y);
Diem O = new Diem();
O.HienThi("Toa do cua goc la: ");
O.HienThi();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace MinhHoaREFOUT
{
public class Diem
{
int x, y;
/// <summary>
/// Hàm khởi tạo 1 điểm với 2 đối số đầu vào
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
public Diem(int x, int y)
{
this.x = x;
this.y = y;
}
public Diem(double x, double y)
{
this.x = (int)x;
this.y = (int)y;
}
/// <summary>
/// Hàm khởi dựng không có đối số. Mặc định là (0, 0)
/// </summary>
public Diem()
{
this.x = this.y = 0;
}
public void HienThi()
{
Console.WriteLine("(x, y) = ({0}, {1})", this.x, this.y);
}
public void HienThi(string gioiThieu)
{
Console.Write(gioiThieu);
Console.WriteLine(" (x, y) = ({0}, {1})", this.x, this.y);
}
public void LayToaDo(ref int hoanhDo, ref int tungDo)
{
//Trong này
//- có thể sử dụng giá trị của hoanhDo
//- không được sử dụng giá trị của tungDo
//- PHẢI thay đổi giá trị của tungDo
Console.WriteLine("Trong than ham: ");
Console.WriteLine("\ttso 1 = {0}", hoanhDo);
Console.WriteLine("\ttso 2 = {0}", tungDo);
hoanhDo = this.x;
tungDo = y;
Console.WriteLine("\t >tso 1 = {0}", hoanhDo);
Console.WriteLine("\t >tso 2 = {0}", tungDo);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace QuanLySinhVien
{
/// <summary>
/// Nhập danh sách sinh viên
/// In danh sách sinh viên ra màn hình
/// </summary>
class Program
{
static void Main(string[] args)
{
/*
//Nhập số lượng sinh viên
Console.Write("so luong sv: ");
int n = int.Parse(Console.ReadLine());
//Nhập danh sách sv
SinhVien[] sv = new SinhVien[n];
for (int i = 0; i < sv.Length; i++)
{
Console.WriteLine("Nhap thong tin cho sinh vien thu
{0}", i + 1);
Console.Write("\tHo ten: ");
string stHoTen = Console.ReadLine();
Console.Write("\tGioi tinh (1/0 tuong ung Nam/Nu): ");
string stGioiTinh = Console.ReadLine();
Console.Write("\tDiem mon 1: ");
string m1 = Console.ReadLine();
Console.Write("\tDiem mon 2: ");
string m2 = Console.ReadLine();
Console.Write("\tDiem mon 3: ");
string m3 = Console.ReadLine();
sv[i] = new SinhVien(stHoTen, stGioiTinh, m1, m2, m3);
}
//In danh sách sinh viên
for (int i = 0; i < sv.Length; i++)
sv[i].HienThiDangBang();
*/
//Khai báo và khởi tạo arrayList
ArrayList sv = new ArrayList();
//Nhập dữ liệu cho arrayList
while (1 == 1)
{
Console.WriteLine("Nhap thong tin cho sinh vien");
Console.Write("\tHo ten: ");
string stHoTen = Console.ReadLine();
Console.Write("\tGioi tinh (1/0 tuong ung Nam/Nu): ");
string stGioiTinh = Console.ReadLine();
Console.Write("\tDiem mon 1: ");
string m1 = Console.ReadLine();
Console.Write("\tDiem mon 2: ");
string m2 = Console.ReadLine();
Console.Write("\tDiem mon 3: ");
string m3 = Console.ReadLine();
Student x = new Student(stHoTen, stGioiTinh, m1, m2,
m3);
sv.Add(x);
//sv.Add(new SinhVien(stHoTen, stGioiTinh, m1, m2, m3));
Console.Write("\nNhap tiep (C/K)");
if (Console.ReadLine().ToUpper() == "K")
break;
}
//In dữ liệu
for (int i = 0; i < sv.Count; i++)
{
//Xử lý phần tử sv[i]: object > cần phải ép về kiểu
SinhVien
Student x = (Student)sv[i];
x.HienThiDangBang();
//((SinhVien)sv[i]).HienThiDangBang();
}
//foreach (object x in sv)
//{
// ((SinhVien)x).HienThiDangBang();
//}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace QuanLySinhVien
{
class Nguoi
{
string hoTen;
public Nguoi(string name)
{
this.hoTen = name;
}
public virtual void HienThi()
{
Console.WriteLine("Ten toi la {0}", hoTen);
}
}
class SinhVien : Nguoi
{
double m1, m2, m3;
public SinhVien(string hoTen, double m1, double m2, double m3)
:base(hoTen)
{
this.m1 = m1;
this.m2 = m2;
this.m3 = m3;
}
public override void HienThi()
{
base.HienThi(); //Sử dụng hàm HienThi() của lớp cha
Console.WriteLine("Diem {0}, {1}, {2}\n", this.m1, this.m2,
this.m3);
}
}
class NhanVien : Nguoi
{
private double heSoLuong;
/// <summary>
/// Hiển thị thông tin của Nhân viên
/// </summary>
public override void HienThi()
{
base.HienThi();
Console.WriteLine("He so luong: {0}\n",
this.heSoLuong);
}
public NhanVien(string hoTen, double heSoLuong)
:base(hoTen)
{
this.heSoLuong = heSoLuong;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace QuanLySinhVien
{
/// <summary>
/// Lớp mô tả thực thể Sinh viên
/// </summary>
class Student
{
#region Các biến thành phần
private string hoTen;
private bool gioiTinh;
private double mon1;
private double mon2;
private double mon3;
#endregion
#region Các hàm khởi dựng
/// <summary>
/// Hàm khởi dựng không có tham số
/// </summary>
public Student()
{
this.hoTen = "Khong biet";
this.gioiTinh = true;
this.mon1 = this.mon2 = this.mon3 = 0;
}
/// <summary>
/// Hàm khởi dựng SinhVien
/// </summary>
/// <param name="hoTen">Họ tên</param>
/// <param name="gioiTinh">Giới tính (1/True: Nam)</param>
/// <param name="m1">Chuỗi điểm môn 1</param>
/// <param name="m2">Chuỗi điểm môn 2</param>
/// <param name="m3">Chuỗi điểm môn 3</param>
public Student(string hoTen, string gioiTinh,
string m1, string m2, string m3)
{
this.hoTen = hoTen;
this.gioiTinh = (gioiTinh == "1" || gioiTinh.ToUpper() ==
"TRUE");
this.mon1 = double.Parse(m1);
this.mon2 = double.Parse(m2);
this.mon3 = double.Parse(m3);
}
/// <summary>
/// Hàm khởi dựng cho SinhVien với các tham số trực tiếp
/// </summary>
/// <param name="hoTen"></param>
/// <param name="gioiTinh"></param>
/// <param name="m1"></param>
/// <param name="m2"></param>
/// <param name="m3"></param>
public Student(string hoTen, bool gioiTinh,
double m1, double m2, double m3)
{
this.hoTen = hoTen;
this.gioiTinh = gioiTinh;
this.mon1 = m1;
this.mon2 = m2;
this.mon3 = m3;
}
#endregion
#region Hàm tính toán
public double DiemTrungBinh()
{
return (mon1 + mon2 + mon3) / 3;
}
#endregion
#region Các hàm hiển thị thông tin
public void HienThi()
{
Console.WriteLine("{0} {1} Mon 1: {2}, Mon 2: {3}, Mon 3
{4}",
this.gioiTinh ? "Anh" : "Chi", this.hoTen, this.mon1,
this.mon2, this.mon3);
}
public void HienThiDangBang()
{
Console.WriteLine("{1, 35} {0,5} {2} {3} {4} {5}",
this.gioiTinh ? "Nam" : "Nu", this.hoTen,
this.mon1, this.mon2, this.mon3, this.DiemTrungBinh());
}
#endregion
}
}