2011-11-30 65 views
0

我发现了很多关于面向对象编程的信息,但没有它似乎进入太多细节。他们总是给你圆形,方形和矩形实现界面的形状示例。这很容易。我正在寻找更真实的生活,并深入到这个过程中。哪里可以找到有关OOP的深入信息?

有谁知道是深入漂亮任何好的资源?甚至代码示例都会有所帮助。

+0

你需要更具体些。你在谈论概念还是设计? –

+0

主要是通过继承和接口建模对象的最佳方式。这就是我真正需要的。谢谢 – Frankie

+0

@Frankie - 我给你留下了更详细的答案。这是建模的一个非常基本的例子,但它可能会让你开始。另外,我鼓励您结帐我提供的WIKIBOOKS链接,因为这将是一个很好的开始。 –

回答

3

这是一个非常宽泛的问题......这里只是几个链接给你:

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

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

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


我们使用接口和基类来表示非常基本的模型。其中一个接口和一个基类之间的定义不同的是,接口不能被实例化(认为它是一个蓝图,可以物理上不存在,只是在纸上的设计)......一个基类,但是可以被实例化(它可以存在,并可能被视为原型)。让我们从那里......

说,我们要车辆 ... 飞机,汽车,摩托车,自行车等模型,我们的模型的大脑,我们认识到,车辆是一切的根本。接下来我们开始制定适用于所有类型车辆的蓝图。为此,我们将使用一个接口

interface IVehicle 
{ 
    string Make; 
    string Model; 
    int 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; } 
} 

现在我们有一个原型,从构建基类。让我们来设计一辆汽车和一辆自行车

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; } 
} 

这样,我们可以实例汽车和自行车的对象......但使用的基类,我们可以创建许多其他类型的LandVehicles,而无需我们的基本属性添加到每个一。这是使OOP如此可扩展的原因之一。

我们的接口

此外,我们离开它打开足以让其他基类,也许WaterVehicles,AirVehicles,等等,因此,从他们的派生类。

这仅仅是冰山的最顶端,和一个相当现成的,顶级我的头例子,但它应该让你开始。 如果有更具体的问题或者您想具体场景作为背景来使用,让我知道,我会帮助更多信息。

+0

谢谢你的解释,它的伟大! – Dayan

相关问题