0% found this document useful (0 votes)
8 views7 pages

Bai 2

Uploaded by

monpen.nnt
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views7 pages

Bai 2

Uploaded by

monpen.nnt
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

B1

public class ChocolateBoiler

private bool empty;

private bool boiled;

private static ChocolateBoiler uniqueInstance;

private ChocolateBoiler()

empty = true;

boiled = false;

public static ChocolateBoiler getInstance()

if (uniqueInstance == null)

uniqueInstance = new ChocolateBoiler();

return uniqueInstance;

public void fill()

if (isEmpty())

empty = false;
boiled = false;

public void drain()

if (!isEmpty() && isBoiled())

empty = true;

public void boil()

if (!isEmpty() && !isBoiled())

boiled = true;

public bool isEmpty()

return empty;

public bool isBoiled()

return boiled;
}

Bai2

public abstract class SinhVien : ICloneable

public string Ten { get; set; }

public string DiaChi { get; set; }

public int Tuoi { get; set; }

protected SinhVien(string ten, string diaChi, int tuoi)

Ten = ten;

DiaChi = diaChi;

Tuoi = tuoi;

public abstract void DiHoc();

public object Clone()

return this.MemberwiseClone();

public class SinhVienChuyenToan : SinhVien

public SinhVienChuyenToan(string ten, string diaChi, int tuoi) : base(ten, diaChi, tuoi) { }
public override void DiHoc()

Console.WriteLine($"{Ten} - Di thi chuyen toan");

public class SinhVienChuyenTin : SinhVien

public SinhVienChuyenTin(string ten, string diaChi, int tuoi) : base(ten, diaChi, tuoi) { }

public override void DiHoc()

Console.WriteLine($"{Ten} - Di thi chuyen tin");

internal class Program

static void Main(string[] args)

SinhVien sv1 = new SinhVienChuyenToan("Nguyen Van A", "Hanoi", 18);

SinhVien sv2 = new SinhVienChuyenTin("Tran Thi B", "HCMC", 19);

sv1.DiHoc();

sv2.DiHoc();

SinhVien cloneSv1 = (SinhVien)sv1.Clone();

SinhVien cloneSv2 = (SinhVien)sv2.Clone();


Console.WriteLine("\nSau khi clone:");

cloneSv1.DiHoc();

cloneSv2.DiHoc();

Bai3

public class Engine

public string Model { get; set; }

public int HorsePower { get; set; }

public Engine DeepClone()

return new Engine

Model = this.Model,

HorsePower = this.HorsePower

};

public class Car

public string Make { get; set; }

public string Model { get; set; }

public Engine Engine { get; set; }


public Car DeepClone()

return new Car

Make = this.Make,

Model = this.Model,

Engine = this.Engine.DeepClone()

};

internal class Program

static void Main(string[] args)

var originalCar = new Car

Make = "Tesla",

Model = "Model S",

Engine = new Engine { Model = "Electric", HorsePower = 1020 }

};

// Sử dụng phương thức DeepClone để tạo một bản sao của Car

var clonedCar = originalCar.DeepClone();

// Thay đổi giá trị trong bản sao, không ảnh hưởng đến bản gốc

clonedCar.Make = "Ford";

clonedCar.Engine.HorsePower = 800;
// Hiển thị thông tin của Car gốc và Car đã sao chép

Console.WriteLine("Original Car: ");

Console.WriteLine($"Make: {originalCar.Make}, Model: {originalCar.Model}, Engine:


{originalCar.Engine.Model}, HorsePower: {originalCar.Engine.HorsePower}");

Console.WriteLine("\nCloned Car: ");

Console.WriteLine($"Make: {clonedCar.Make}, Model: {clonedCar.Model}, Engine:


{clonedCar.Engine.Model}, HorsePower: {clonedCar.Engine.HorsePower}");

You might also like