kramann.info
© Guido Kramann

Login: Passwort:










3.9 Entwurf einer Software-Architektur für die App-Entwicklung am Beispiel von TapeEcho

3.9 Designing a software architecture for app development using the example of TapeEcho (EN google-translate)

3.9 Projektowanie architektury oprogramowania dla rozwoju aplikacji na przykładzie TapeEcho (PL google-translate)

Nach folgende Grafik zeigt den Entwurf einer Klassenarchitektur für TapeEcho:

The following graphic shows the design of a class architecture for TapeEcho:

Poniższa grafika przedstawia projekt architektury klas dla TapeEcho:

Klassenarchitektur für TapeEcho.

Bild 3.9-1: Klassenarchitektur für TapeEcho.

Es gilt ein umfangreiches Framework zu entwickeln, um allgemein die Entwicklung eines bestimmten individualisierten Typs an Apps zu unterstützen. So ist die Klasse Zwischenschicht dafür vorgesehen, den unmittelbar in der erbenden Klasse verfügbaren Befehlssatz anzureichern, so dass die Methoden aus PApplet und auch die der Zwischenklasse verfügbar sind.

It is important to develop a comprehensive framework in general the development of a particular individualized type of apps to support. So the class codeInterface / code is intended f to enrich the instruction set available directly in the inheriting class, so that the methods of PApplet and those of the intermediate class are available.

Ważne jest ogólne opracowanie ogólnych ram rozwój konkretnego zindywidualizowanego typu aplikacji wspierać. Zatem przeznaczony jest dla kodu klasyInterface / co wzbogacić zestaw instrukcji dostępny bezpośrednio w klasie dziedziczenia, aby dostępne były metody PApplet i metody klasy pośredniej.

Beispiele hierzu wären Methoden, die es vereinfachen, Standardbedienelemente zu erzeugen, oder die Eigenschaften des Zieldevices abzurufen (verfügbarer RAM-Speicher, Sensoren, ... ), oder Hilfsmethoden, um GUI-Elemente wie Buttons leichter zu erstellen.

Examples would be methods that simplify standard controls or to retrieve the properties of the target device (available RAM memory, sensors, ...), or helper methods to GUI elements such as buttons easier to create.

Przykładami mogą być metody upraszczające standardowe kontrole lub aby pobrać właściwości urządzenia docelowego (dostępne Pamięć RAM, czujniki, ...) lub metody pomocnicze dla elementów GUI, takich jak przyciski łatwiejsze do stworzenia.

Neben der Hauptklasse (im wirklichen Projekt info.kramann.tapeecho.TapeEcho), gibt es die Anwendungsklasse, die die Hauptfunktionalität enthält und bereits mit Hilfe einer rudimentären GUI in Hauptklasse getestet werden kann.

In addition to the main class (in the actual project info.kramann.tapeecho.TapeEcho), there is the application class that contains the main functionality and already can be tested with a rudimentary GUI in main class.

Oprócz głównej klasy (w rzeczywistym projekcie info.kramann.tapeecho.TapeEcho), istnieje klasa aplikacji, która zawiera główną funkcjonalność i już istnieje można przetestować z podstawowym GUI w głównej klasie.

In einem Unterpackage hilfsklassen werden zudem nützliche Methoden gesammelt, die auch in anderen Projekten wiederverwendet werden können.

In a subpackage auxiliary classes also useful methods are collected, the can also be reused in other projects.

W klasach pomocniczych podpakietowych zbierane są również użyteczne metody mogą być ponownie wykorzystane w innych projektach.

Nachfolgend sind zur Illustration noch Beispiel-Attribute und -Methoden eingefügt:

Below are some example attributes and methods for illustration:

Poniżej znajduje się kilka przykładowych atrybutów i metod ilustracji:

Klassenarchitektur für TapeEcho mit Beispielmethoden.

Bild 3.9-2: Klassenarchitektur für TapeEcho mit Beispielmethoden.

Dier hier dargestellte Struktur soll als Anregung für das eigene Projekt dienen, kann aber auch einfach so, wie sie ist für das eigene Projekt adaptiert werden.

The structure presented here is intended as a suggestion for your own project, But it can also be adapted as it is for your own project.

Przedstawiona tutaj struktura jest propozycją dla twojego własnego projektu, Ale można go również dostosować do swojego projektu.

Verfeinerung der Architektur

Refinement of the architecture

Udoskonalenie architektury

Anstatt einer Zwischenschicht, werden eine ganze Reihe voneinander erbender Zwischenklassen eingeführt.

Instead of an interlayer, a whole bunch are inheriting from each other Intermediate classes introduced.

Zamiast międzywarstwy cała grupa dziedziczy po sobie Wprowadzono klasy pośrednie.

Das hat den Vorteil, dass der Quelltext besser geordnet wird und man nicht benötigte Zwischenschichten leichter entfernen kann, insofern erst die Hauptklasse die Inhalte benötigt und nicht bereits Zwischenklassen.

This has the advantage that the source code is better ordered and you can remove unneeded intermediate layers easier, so far only the main class needs the content and not already intermediate classes.

Ma to tę zaletę, że kod źródłowy jest lepiej uporządkowany i możesz usunąć niepotrzebne warstwy pośrednie, jak na razie główna klasa potrzebuje treści, a nie klas pośrednich.

Verfeinerung der Architektur

Bild 3.9-3: Verfeinerung der Architektur

Das vorangestellte X steht für eXtension / Erweiterung.

The prefix X stands for eXtension / extension.

Przedrostek X oznacza eXtension / extension.

Zudem wäre denkbar, die Zwischenklassen in einzelne als Library markierte, voneinander getrennte Eclipse-Projekte zu packen.

In addition, it would be conceivable to classify the intermediate classes as individual Library grabbed separate Eclipse projects.

Ponadto można byłoby klasyfikować klasy pośrednie jako indywidualne Biblioteka porwała oddzielne projekty Eclipse.

Die Anzahl der Zwischenklassen könnte viel größer sein. Hier ein Entwurf:

The number of intermediate classes could be much larger. Here is a draft:

Liczba klas pośrednich może być znacznie większa. Oto wersja robocza:

  • PApplet - tiefste Schicht
  • Xdevice - Informationen über das Gerät sind von hier abrufbar.
  • Xconst - Globale Konstanten können hier vereinbart werden.
  • Xtime - Datum, Uhrzeit, vergangene Zeit seit start, ...
  • Xfile - Persistenz (Daten laden/speichern)
  • Xtext - Umgang mit Text (Darstellung, laden, speichern)
  • Ximage - Umgang mit Bildern (laden, speichern, darstellen)
  • Xaudio - Mikrofon, Audioausgang
  • Xgui - GErzeugen von GUI-Elemente
  • Xsensor - Zugriff auf Device-Sensoren
  • Xcam - Kamera
  • Xnfc - Near Field Communication
  • Xtooth - Bluetooth
  • Xnet - Internetzugriff
  • Xanimation - Erstellen von Animationen
  • X3d - 3D-Objekte
  • Xdatabase - Verwendung einer Datenbank
  • Xxml - Manipulation von XML
  • Xhtml - Manipulation von HTML-Dokumenten
  • Xuart - serielle Kommunikation

Da es sich um eine grosse Anzahl an Möglichkeiten handelt und die strenge Hierarchie eher unmotiviert ist, wäre alternativ möglich von jeder Klasse ein Objekt in der Hauptklasse bei Bedarf zu erzeugen.

Since it concerns a large number of possibilities and the strict hierarchy is rather unmotivated, would be alternatively possible from each class an object in the Generate main class if required.

Ponieważ dotyczy dużej liczby możliwości i ścisła hierarchia jest raczej pozbawiona motywacji ewentualnie z każdej klasy obiekt w Generuj główną klasę, jeśli jest to wymagane.

Der Nachteil hiervon ist, dass nun nicht mehr ein einfacher Befehl etwas bewirkt, sondern immer objektname.befehl().

The disadvantage of this is that now no more simple command does something, but always objectname.command ().

Wadą tego jest to, że już nie więcej proste polecenie robi coś, ale zawsze objectname.command ().

Tip: Notwendige Resourcen wie Arrays, andere Objekte müssen nicht vor der ersten Verwendung einer Methode instanziiert werden, wenn man so verfährt:
Tip: Necessary resources such as arrays, other objects do not have to before the first use of a method instantiated, if one proceeds like this:
Wskazówka: Niezbędne zasoby, takie jak tablice, inne obiekty nie musisz tego robić przed pierwszym użyciem metody Utworzona, jeśli postępuje się tak:
public boolean sendeSMS(String text, String nummer)
{
    if(sms==null)
    {
        sms = new SMSgeraet();
    }

    if(sms!=null)
    {
        sms.schicken(text,nummer);
        return true;
    }
    else
    {
        return false;
    }
}

Code 3.9-1: Instanziierung bei Bedarf am Beispiel eines SMS-Gerätes.

Vorteil: leichter verstehbarer Code im Hauptprogramm. Vorteil2: Keine unnötigen Instanziierungen. Nachteil: Verlangsamung beim ersten Aufruf der Methode.

Advantage: easier to understand code in the main program. Advantage2: No unnecessary instantiations. Disadvantage: slowing down the first time the method is called.

Zaleta: łatwiejszy do zrozumienia kod w programie głównym. Advantage2: Bez zbędnych zadań. Wada: spowolnienie przy pierwszym wywołaniu metody.