451 Stimmen

Unterschied zwischen Abstraktion und Verkapselung?

Was ist der genaue Unterschied zwischen Kapselung und Abstraktion?

2voto

twimo Punkte 3851

Der Prozess der Abstraktion und Verkapselung beide erzeugen Schnittstellen.

Eine durch Kapselung erzeugte Schnittstelle verbirgt Implementierungsdetails.

Eine durch Abstraktion erzeugte Schnittstelle wird auf mehr Datentypen anwendbar als vor der Abstraktion.

2voto

mawuena Sarbah Punkte 29
class Aeroplane : IFlyable, IFuelable, IMachine
{ // Aeroplane's Design says:
  // Aeroplane is a flying object
  // Aeroplane can be fueled
  // Aeroplane is a Machine
}
// But the code related to Pilot, or Driver of Aeroplane is not bothered 
// about Machine or Fuel. Hence,
// pilot code:
IFlyable flyingObj = new Aeroplane();
flyingObj.Fly();
// fighter Pilot related code
IFlyable flyingObj2 = new FighterAeroplane();
flyingObj2.Fly();
// UFO related code 
IFlyable ufoObj = new UFO();
ufoObj.Fly();
// **All the 3 Above codes are genaralized using IFlyable,
// Interface Abstraction**
// Fly related code knows how to fly, irrespective of the type of 
// flying object they are.

// Similarly, Fuel related code:
// Fueling an Aeroplane
IFuelable fuelableObj = new Aeroplane();
fuelableObj.FillFuel();
// Fueling a Car
IFuelable fuelableObj2 = new Car(); // class Car : IFuelable { }
fuelableObj2.FillFuel();

// ** Fueling code does not need know what kind of vehicle it is, so far 
// as it can Fill Fuel**

2voto

nits.kk Punkte 5019

Abstraction ist eine Vertrag für die Umsetzung, die wir vorhaben. Die Implementierung kann sich im Laufe der Zeit ändern. Die verschiedenen Implementierungen selbst können versteckt sein oder auch nicht, sind aber Maskiert hinter der Abstraktion.

Angenommen, wir definieren alle APIs einer Klasse in einer interface dann die Nutzer unseres Codes auffordern, sich auf die definierten APIs der interface . Es steht uns frei, die Implementierung zu verbessern oder zu ändern, wir müssen uns nur an den festgelegten Vertrag halten. Die Benutzer sind nicht gekoppelt mit unserer Implementierung.

Wir EXPONIEREN alle NÖTIGEN Regeln (Methoden) in der Abstraktion Die Implementierung der Regeln wird den implementierenden Entitäten überlassen, auch die Implementierung ist nicht Teil der Abstraktion. Es ist nur die Unterschrift y Erklärung was die Abstraktion ausmacht.

Encapsulation ist einfach HIDING die internen Details, indem der Zugang zu den Zuständen und Verhaltensweisen eingeschränkt wird. Eine gekapselte Klasse kann, muss aber nicht über gut definierte Abstraction .

java.util.List ist eine Abstraktion für java.util.ArrayList . Die internen Zustände von java.util.ArrayList gekennzeichnet mit non public Zugriffsmodifikatoren ist die Verkapselung.

Modifier Angenommen, eine Klasse Container.nava implements IContainer , IContainer können Methoden deklarieren wie addElement , removeElements , contains , usw. Hier IContainer stellt die Abstraktion für ihre implementierende Klasse dar. Abstraktion bedeutet, dass die APIs einer Klasse, eines Moduls oder eines Systems für die Außenwelt deklariert werden. Diese APIs werden die contract . Dieses System kann bereits entwickelt sein oder noch nicht. Die Nutzer des Systems können sich nun auf die deklarierten APIs verlassen und sicher sein, dass jedes System, das einen solchen Vertrag implementiert, sich immer an die deklarierten APIs halten wird, sie werden immer die Implementierung für diese APIs bereitstellen. Sobald wir eine konkrete Entität schreiben, ist die Entscheidung, unsere internen Zustände zu verbergen, Kapselung.

1voto

coder Punkte 1784

In-short

Verwendung von Abstraktion -> Verkapselung & Verwendung von Verkapselung -> Datenverstecken

OR

Data Hiding ist eine Teilmenge der Encapsulation y Kapselung ist eine Teilmenge der Abstraktion

Referenz: http://www.tonymarston.co.uk/php-mysql/abstraction.txt

1voto

Nitesh Bhargava Punkte 21

Die Abstraktion verbirgt nicht nützliche Daten vor den Nutzern. und Verkapselung bedeutet, Daten in einer Kapsel (einer Klasse) zusammenzufassen. Ich denke, Verkapselung ist die Art und Weise, wie wir Abstraktion erreichen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X