哪里可以找到有关OOP的深入信息?

时间:2011-11-30 20:59:31

标签: oop interface abstract-class

我发现了很多关于面向对象编程的信息,但似乎都没有详细介绍。它们总是为您提供形状示例,其中cirlce,square和retangle实现接口。这很简单。我正在寻找更真实的生活和更深入的过程。

有没有人有任何非常深入的好资源?甚至代码样本也会有所帮助。

1 个答案:

答案 0 :(得分:3)

这是一个非常广泛的问题......这里只是一些链接:

http://en.wikibooks.org/wiki/Object_Oriented_Programming

http://www.amazon.com/Object-Oriented-Programming-Peter-Coad/dp/013032616X

@Frankie - 我已经看过你的评论了。你的问题仍然很广泛,但我会尝试提供一个快速(非常松散的想法)建模一些对象的例子。我将使用的语言是C#,但您可以使用任何您喜欢的OOP语言。


我们使用Interfaces和Base Classes来表示非常基本的模型。接口和基类之间的定义差异之一是接口无法实例化(将其视为无法实际存在的蓝图,只是纸上的设计)...然而,基类可以实例化(它可以存在,可能被认为是原型)。我们离开那里......

假设我们想要模拟车辆 ...... 飞机,汽车,摩托车,自行车等等。在我们的模拟大脑中,我们认识到车辆是一切的根源。让我们从定义适用于所有类型车辆的蓝图开始。为此,我们将使用接口

interface IVehicle
{
    string Make;
    string Model;
    int Year;
}

我们的界面现在说,我们构建的任何实现此接口的对象都必须具有Make,Model和Year属性。现在汽车,自行车,摩托车等涌入我们的脑海,我们想为他们上课......但我们意识到,很多这些车辆都有共同点。让我们为所有LandVehicles制作一个原型,为此我们将使用基类来实现我们的蓝图界面 IVehicle

public class LandVehicle : IVehicle
{
    // We must physically implement the required members of the interface.
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }
    // Then we can add things specific to land vehicles.
    public int NumberOfWheels { get; set; }
    public int TopSpeed { get; set; }
}

现在我们有一个可以构建的原型。我们设计一个Car和一个循环

public class Car : LandVehicle
{
    // because LandVehicle is a real object, we do not have to re-implement its memebers,
    // we can just add to them:
    public int MaxPassengers { get; set; }
    public bool IsLuxury { get; set; }
    public string FuelType { get; set; }
}

public class Bicycle : LandVehicle
{
    public string Type { get; set; } // mountain, race, cruiser, etc.
    public int NumberOfGears { get; set; }
}

有了这个,我们可以实例化Cars和Bicycle对象......但是通过使用Base Classes,我们可以创建许多其他类型的LandVehicles而无需为每个类添加我们的基本属性。这是使OOP如此可扩展的事情之一。

此外,通过我们的界面,我们将其打开足以制作其他基类,可能是WaterVehicles,AirVehicles等......以及从它们派生的类。

这只是冰山一角,而且是一个相当偏离我头脑的例子,但它应该让你开始。 如果您有更具体的问题或特定情况,您希望将其用作上下文,请告诉我,我会提供更多帮助。