2011-11-30 3 views
0

나는 객체 지향 프로그래밍에 관한 많은 정보를 찾았지만 그 중 어느 것도 자세히 설명하지 못했다. 그들은 항상 cirlce, square 및 retangle이 인터페이스를 구현하는 모양 예제를 제공합니다. 쉽습니다. 나는 좀 더 실제와 더 깊은 과정을 찾고 있습니다.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

관련 문제