API, SDK, Klasse?
-
Hallo,
ich höre öfter etwas von "der Hersteller stellt doch eine API für xy bereit"...
Was genau ist der Unterschied zwischen einer API für ein Programm und einer
Klasse, die ich via .h/.cpp Dateien bereitstelle?Ist also eine API für eine Software am Ende nur eine Sammlung von Klassen?
Und ein SDK...ist das eine Sammlung mehrerer API??Ich bekomme die Begriffe und so nicht zusammen.

-
eine api is ne sammlung von klassen / funktionen etc. die dir über eine schnittstelle zur verfügung gestellt werden (kompletter source code, libs usw). ein sdk liefert häufig zusätzlich noch viel mehr tools mit, etwa converter für dateiformate usw.
-
TravisG schrieb:
eine api is ne sammlung von klassen / funktionen etc. die dir über eine schnittstelle zur verfügung gestellt werden (kompletter source code, libs usw). ein sdk liefert häufig zusätzlich noch viel mehr tools mit, etwa converter für dateiformate usw.
Hmmmm... Eine API ist zunaechst einmal nur eine Schnittstelle. D.h. das sind Funktionsdeklarationen und Klassendefinitionen (im Grunde das, was in C++ in .h - Dateien steht).
Die eigentliche Implementierung dieser Klassen (also die ausprogrammierten Klassen und Funktionen) sind dann Bibliotheken. Wenn eine Bibliothek sehr gross und umfangreich ist, also bereits ein ganzes Framework fuer deine Entwicklung bieten (d.h. dir schon sehr viel von deinem Programmdesign abnehmen, dir gewisse Rahmenbedingungen abnehmen) kann man von einem SDK sprechen. Alles, was du z. B. brauchst um DirectX Programme zu schreiben, steckt dann im DirectX-SDK. Wenn du DirectX verwendest, hast du schon eine Menge Dinge, die dir helfen dein Programm zu entwickeln: Grafik- und Soundausgabe, Inputhandling, ....Was genau ist der Unterschied zwischen einer API für ein Programm und einer
Klasse, die ich via .h/.cpp Dateien bereitstelle?Na ja, eine API ist wie gesagt eine Schnittstelle. D.h. die API sagt dir "wie kann ich das Ding verwenden". Bei Klassen ist das die Klassendeklaration: da steht drinnen welche Methoden die Klasse hat. Die eigentliche Implementierung (also WIE die Methoden ausprogrammiert sind) ist nicht Teil der API.
Die API fuer ein Programm sagt dir dann, WIE du als Programmierer mit anderen Programmen sprechen kannst, also dass du z. B. den Internet-Explorer in dein eigenes Programm einbaust.ich höre öfter etwas von "der Hersteller stellt doch eine API für xy bereit"...
Den Satz gibts in 2 Varianten:
A) "Hersteller A implementiert XY":
Wie gesagt sind APIs nur eine Beschreibung der Art "xy kann dieses und jenes". Ein gutes Beispiel ist z. B. OpenGL: OpenGL ist eigentlich nur eine Sammlung von Funktionen, mit denen Grafikobjekte auf den Bildschirm gezeichnet werden. Der OpenGL-Standard sagt z. B. "es gibt in OpenGL eine Funktion soundso mit dem Paramter x und y, und die macht blablupp". Und die Grafikkartenhersteller muessen diese API dann implementieren (d.h. ausprogrammieren, damit die Funktion soundso auf PCs mit ihren Grafikkarten auch genau blablupp machen).
"Programm A kann man so verwenden":
Der Internet Explorer ist z. B. erstmal nur ein stinknormaler Browser. Aber er bietet auch eine API (d.h. eine Schnittstelle) an, mit dem man ihn in eigene Programme integrieren kann. D.h. es gibt gewisse Funktionen, die ich als Programmierer nutzen kann, um mit Hilfe des IE Webseiten in meiner Applikation anzuzeigen (oder z. B. den IE fernzusteuern).