[ C# ] Ví dụ về Kế thừa và Đa hình trong C#


/*
Ví dụ về kế thừa và đa hình trong C#
- Xây dựng lớp SV
  + thuộc tính: họ tên, năm sinh
  + phương thức: Khởi tạo, nhập thông tin
- Xây dựng lớp SVCD kế thừa lớp SV
  Bổ sung:
  + thuộc tính: điểm năm 1, điểm năm 2, điểm năm 3
  + phương thức: tính điểm tổng kết, in thông tin
- Xây dựng lớp SVDH kế thừa lớp SVCD
  Bổ sung:
  + thuộc tính: điểm năm 4

Yêu cầu:
- Khởi tạo mỗi lớp 1 đối tượng, thực hiện nhập thông tin, in thông tin (bao gồm cả điểm tổng kết và điểm chữ - điểm chữ tính theo quy chế đào tạo tín chỉ).

*/

// CODE C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kethu_SV210313
{
    // class SV
    public class SV
    {
        public string ht;
        public int ns;
        // khoi tao
        public SV(string ht, int ns)
        {
            this.ht = ht;
            this.ns = ns;
        }
        // nhap
        public void Nhap()
        {
            // nhap ho ten
            Console.Write("\n Ho ten: ");
            ht = Console.ReadLine().ToString();
            Console.Write("\n Nam sinh: ");
            ns =Int32.Parse( Console.ReadLine());

        }
    }
    // class SVCD
    public class SVCD : SV
    {
        public float d1, d2, d3;
        //khoi tao
        public SVCD(string ht,int ns,float d1,float d2,float d3):base(ht,ns)
        {
            this.d1 = d1;
            this.d2 = d2;
            this.d3 = d3;
        }
        // Nhap 
        public void Nhap()
        {
            base.Nhap();
            // nhap diem
            do
            {
                Console.Write("\n Diem nam thu 1: ");
                d1 = float.Parse(Console.ReadLine());
                if (d1 < 0 || d1 > 10)
                    Console.Write("\n Nhap lai diem !");
            } while (d1 < 0 || d1 > 10);

            do
            {
                Console.Write("\n Diem nam thu 2: ");
                d2 = float.Parse(Console.ReadLine());
                if (d2 < 0 || d2 > 10)
                    Console.Write("\n Nhap lai diem !");
            } while (d2 < 0 || d2 > 10);

            do
            {
                Console.Write("\n Diem nam thu 3: ");
                d3 = float.Parse(Console.ReadLine());
                if (d3 < 0 || d3 > 10)
                    Console.Write("\n Nhap lai diem !");
            } while (d3 < 0 || d3 > 10);
        }
        // Tinh diem
        public float TinhDiem()
        {
            return (d1 + d2 + d3) / 3;
        }
        // In thong tin
        public void InTT()
        {
            char diemChu;
            float dtk = TinhDiem();
            if (dtk < 4.0) diemChu = 'F';
            else if (dtk < 5.5) diemChu = 'D';
            else if (dtk < 7.0) diemChu = 'C';
            else if (dtk < 8.5) diemChu = 'B';
            else diemChu = 'A';
            Console.Write("\n - Ho ten : {0} \n - Tuoi: {1} \n - Diem tong ket: {2} \n - Diem chu: {3}",ht,ns,dtk,diemChu);
        }

    }
    // clas SVDH

    public class SVDH: SVCD
    {
        public float d4;
        //khoi tao
        public SVDH(string ht, int ns, float d1, float d2, float d3, float d4)
            : base(ht, ns,d1,d2,d3)
        {           
            this.d4 = d4;
        }
        // Nhap 
        public void Nhap()
        {
            base.Nhap();
            // nhap diem
            do
            {
                Console.Write("\n Diem nam thu 4: ");
                d4 = float.Parse(Console.ReadLine());
                if (d4 < 0 || d4 > 10)
                    Console.Write("\n Nhap lai diem !");
            } while (d4 < 0 || d4 > 10);

        }
        // Tinh diem
        public float TinhDiem()
        {
            return (d1 + d2 + d3+d4) / 4;
        }
        // In thong tin
        public void InTT()
        {
            base.InTT();
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            // khai bao doi tuong sinh vien CD
            Console.Write("\n SINH VIEN CAO DANG \n");
            SVCD t = new SVCD("", 0, 0.0f, 0.0f,0.0f);
            t.Nhap();
            t.InTT();

            // khai bao doi tuong sinh vien DH
            Console.Write("\n \n SINH VIEN DAI HOC \n");
            SVDH t1 = new SVDH("", 0, 0.0f, 0.0f, 0.0f,0.0f);
            t1.Nhap();
            t1.InTT();

            // 
            Console.ReadLine();
        }
    }
}

// ---------------------------------