引言C作为一种强大的编程语言,广泛应用于Windows平台和.NET框架。其核心特性之一是面向对象编程(OOP)。本文将基于一系列PPT解析,深入探讨C的面向对象设计实战,旨在帮助开发者更好地理解和应...
C#作为一种强大的编程语言,广泛应用于Windows平台和.NET框架。其核心特性之一是面向对象编程(OOP)。本文将基于一系列PPT解析,深入探讨C#的面向对象设计实战,旨在帮助开发者更好地理解和应用OOP原则。
封装是将数据和方法捆绑在一起,隐藏内部实现细节,只暴露必要的接口。在C#中,通过定义类和访问修饰符(如public、private、protected)实现封装。
public class BankAccount
{ private double balance; public void Deposit(double amount) { balance += amount; } public double GetBalance() { return balance; }
}继承允许一个类(子类)继承另一个类(父类)的属性和方法。在C#中,使用冒号(:)和基类名称表示继承。
public class SavingsAccount : BankAccount
{ public void Withdraw(double amount) { if (amount <= GetBalance()) { balance -= amount; } }
}多态允许不同类的对象对同一消息做出不同的响应。在C#中,通过重写基类的方法实现多态。
public abstract class Animal
{ public abstract void MakeSound();
}
public class Dog : Animal
{ public override void MakeSound() { Console.WriteLine("Woof!"); }
}
public class Cat : Animal
{ public override void MakeSound() { Console.WriteLine("Meow!"); }
}每个类应只有一个引起变化的原因。这有助于提高代码的模块化和可维护性。
软件实体(如类、模块、函数等)应尽可能对扩展开放,对修改封闭。
任何基类可以出现的地方,子类一定可以出现。
接口应尽量小,并且内聚。一个类不应依赖它不需要的接口。
高层模块不应依赖于低层模块,二者都应依赖于抽象。
一个类应该对其他类保持尽可能少的依赖。
尽量使用组合或聚合而不是继承来复用代码。
工厂模式用于创建对象,而无需指定对象类。
public abstract class Product
{ public abstract void Use();
}
public class ConcreteProductA : Product
{ public override void Use() { Console.WriteLine("Using Product A"); }
}
public class ConcreteProductB : Product
{ public override void Use() { Console.WriteLine("Using Product B"); }
}
public class Factory
{ public Product CreateProduct(string type) { if (type == "A") { return new ConcreteProductA(); } else if (type == "B") { return new ConcreteProductB(); } return null; }
}单例模式确保一个类只有一个实例,并提供一个全局访问点。
public class Singleton
{ private static Singleton instance; private Singleton() { } public static Singleton GetInstance() { if (instance == null) { instance = new Singleton(); } return instance; }
}观察者模式允许对象在状态变化时通知其他对象。
public interface IObserver
{ void Update();
}
public interface ISubject
{ void RegisterObserver(IObserver observer); void NotifyObservers();
}
public class ConcreteSubject : ISubject
{ private List observers = new List(); public void RegisterObserver(IObserver observer) { observers.Add(observer); } public void NotifyObservers() { foreach (IObserver observer in observers) { observer.Update(); } }
}
public class ConcreteObserver : IObserver
{ public void Update() { Console.WriteLine("Observer notified!"); }
} 通过深入理解C#的面向对象设计实战,开发者可以更好地编写可维护、可扩展的代码。本文通过PPT解析,介绍了面向对象编程基础、设计原则和设计模式实战,希望对开发者有所帮助。