OOP

OOP

OOP


A. M.
Diese Lernkarten bieten einen umfassenden Überblick über objektorientierte Programmierung (OOP) auf Universitätsniveau. Sie behandeln zentrale Konzepte wie Klassen, Objekte, Methoden, Vererbung und Ausnahmen, wobei Beispiele in Java gezeigt werden. Die Karteikarten decken auch fortgeschrittene Themen wie rekursive Funktionen, Datenstrukturen und das MVC-Paradigma ab. Programmierer und Informatikstudenten profitieren von den praktischen Codebeispielen und Erklärungen, die das Verständnis von OOP vertiefen.
Cartes-fiches
33
Utilisateurs
1
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
12.10.2015 / 15.10.2015

Cartes-fiches

Wie castet man Comandotooleingaben

So

Typconvertierungen

so

Syntax einer FOR-Schleife

so

syntax einer Switch-Case?

so

Typische Array-Aufgaben

so

Zwei-Dimensionales-Array, wo sind Spalten und wo sind Zeilen?

so

Wie gibt man ein 2-Dimensionales Array aus?

so

Schreiben sie eine Klasse DatumTest deren main-Methode folgendes in dieser Reihenfolge in einem Ausnahmebehandlungsblock ausführt :

  1. Erzeugen von 2 verschiedenen Datum Objekten

  2. Prüfen auf Gleichheit mit passender Ausgabe

  3. Veränderung von einem Objekt (Tag, Woche oder Jahr)

  4. Prüfen mit gt (greater than) und passende Ausgabe

  5. Erzeugen eine DatumException und passende Ausgabe in dem Ausnahmebehandlungsblock

 

public class DatumTest {
    
    public static void main (String [] args){
        
        try {
            Datum d1 = new Datum(10.10.15);
            Datum d2 = new Datum(11.10.15);
            
            System.out.println(d1.equals(d2));
            
            System.out.println(d1.gt(d2));
        }
        
        catch (DatumExeption e){
            e.getMessage();    
            e.printStackTrace();    
        }
    }
}

Kann ein Interface durch eine abstrakte Klasse implementiert werden?

ja, weil nicht alle InterfaceMethoden in der abstrakten Klasse implementiert werden müssen

Bsp: public abstract class Text implements IText{}

Schreiben sie eine SCHNITTSTELLE IFahrzeug im package fahrzeuge mit 3 Accessor und Modifikator Methoden für Farbe, Besitzer und Hersteller (jeweils Strings).

package fahrzeuge;

interface IFahrzeuge{
    public void setFarbe(String Farbe);
    public String getFarbe();
    public void setBesitzer(String Besitzer);
}

Expandieren sie die Abkürzung GUI und nennen sie die deutsche Übersetzung.

GraphicalUserIntervace also graphische Benutzeroberfläche

rekursive Methode zur Summenbildung aller Zahlen, kleiner gleich dem Parameter

public int rekuSum(int a){
    if (a == 0){
        return 0;
    }
    else {
        return a + rekuSum(a-1);
    }
}

Eine Klasse Auto hat eine Methode fahre, die einen Parameter vom Typ int hat. Bei einer 0 soll „fahre vorwärts“, bei 1 „fahre rückwärts“ ausgegeben werden. Ansonsten wird eine CrashException geworfen. Schreiben die die Klassen Auto und CrashException im Paket Test.

package test;

public class CrashExeption extends Exeption {
    public CrashExeption(){
        super("Crash!!!");
    }
}

================================

public class Auto {
    public void fahren(int a){
        if (a == 0){
            System.out.println("Rückwert");
        }
        else if (a == 1){
            System.out.println("Vorwerts");
        }
        else {
            throw new CrashExeption();
        }
    }
}

Nennen sie die Bedeutung von MVC und geben sie ein Beispiel für die Verwendung.

Softwareentwicklungsparadigma, welches die Klassen via Packages in die Struktur
- Model (Modelierungsklassen),
- Views (GUI-Klassen),
- Controler (Datenfluss / Schnittstellen)
aufteilt

Model

Für den Browser ist die HTML-Seite der Datenkern seines Models. Aus der Perspektive des Gesamtsystems ist sie nur eine Sicht auf das Gesamtmodel, welches auf dem Server lokalisiert ist.

View

Der Browser kümmert sich um die allgemeinen Funktionen, wie die Darstellung von Text, Formularelementen und eingebetteten Objekten. Die Darstellung wird dabei im Speziellen durch den View-Programmteil des Servers per HTTP-Response gesteuert, deren Hauptteil der Darstellungsanweisung aus der HTML-Seite besteht.

Controller

Der Browser akzeptiert Formulareingaben und sendet diese ab oder nimmt das Anklicken eines Links entgegen. In beiden Fällen sendet er einen HTTP-Request an den Server. Der Controller-Programmteil verarbeitet die Daten der HTTP-Requests und stößt schließlich die Erstellung eines neuen Views an.

Stack mit den Methoden isEmpty, pop, push, print

public class Stack{
    private int lv;
    private int stack[];
    
    public Stack(int a){
        stack = new int[a];
        lv= -1;
    }
    
    public boolean isEmpty(){
        if (lv >= 0){
            return false;
        }
        else {
            return true;
        }
    }
    
    public int pop(){
        if (isEmpty() == true){
            return -1;
        }
        else {
            lv --;
            return stack[lv + 1];
        }
    }
    
    public void push(int a){
        if (lv == (stack.lenght -1)){
            System.out.println("Stack voll");        
        }
        else {
            lv++;
            stack[lv] = a;
        }
    }
    
    public void print(){
        for(int i = 0; i < stack.length; i++){
            System.out.println(stack[i]);        
        }
    }
}

Wofür benutzt man das Schlüsselwort „throws“?

für Bekanntgabe einer oder mehrere unchecked Exceptions einer Methode werfbar sind, diese aber nicht selbst fängt und ggf. propagiert
Bsp: public void doThis() throws MyExeption{}

Schreiben sie eine Datenstruktur, die nicht initialisiert werden kann, keine Methodenrümpfe enthalten kann, mit zwei methoden, die jeweils zwei Parameter vom Typ Datum akzeptieren und beide DatumException werfen können.

public abstract Datum{
    public abstract void doThis(Datum a, Datumb) throws DatumExeption;
    public abstract void doThat(Datum a, Datumb) throws DatumExeption;
}

Schreiben sie die Klasse FeuerwehrAuto, diese Erbt von ihrer Klasse Auto im Paket Test und implementiert IFahrzeug.

package test;
public class FeuerwehrAuto extends Auto implements IFahrzeug{}

Warum sollte man geboxte Typen als Parameter vermeiden?

Bei Vergleichsopperator werden Objektreferenzen verglichen und nicht die gekapselten Infos.

Werden die relationalen Operatoren == und != bei
Referenzvariablen, die auf Objekte von Wrapper-Klassen
zeigen, verwendet, so werden aber (wie bei Referenzvariablen
üblich) die Referenzen verglichen und nicht die Inhalte!

Schreiben sie eine Klasse Sohn, diese implementiert Mutter und erbt von Vater.

Nennen sie die 4 polymorphen Zustände, in denen man ein Objekt der Klasse Sohn ansprechen kann.

public class Sohn extends Vater implements Mutter{}

... ansprechbar als
(Sohn)test
(Vater)test
(Mutter)test
(Object)test

Kann eine Ausnahmeklasse von einer anderen Erben. Falls ja, geben Sie ein Beispiel an.

ja, siehe
public class MyException extends Exception{}

3 Möglichkeiten eine Schleife vorzeitig zu entlassen...

break;
throw new MyException();
return;

Kann eine Exception von einer anderen Exception erben?

Ja, siehe...
public class Exception3 extends Exception{}

Schreiben Sie eine Schnittstelle IFahrzeug die ...
   Deklarieren der Accessor und Modifier Methoden für drei Variablen ...
   und Typ String enthält. Die Variablen werden für eine Farbe,
   Typen und einen Besitzer verwendet. Das Konstrukt liegt im Paket
   Klausur und ist in anderen Paketen sichtbar.

package Klausur;

public interface IFahrzeug{

    public void setFarbe(String Farbe);
    public String getFarbe();
}

Der Konstruktor der Datenstruktur Comic erstellt eine Instanzvariable und kann diese  beliebig bef¸llen. In der Methode readComic soll der Inhalt der Variable ausgegeben werden.

public class Comic{
    private int text;

    public Comic(int a){
        text = a;
    }
    
    public void readComic(){
        System.out.println(text);
    }
}

Schreiben Sie den Kopf einer Exception Klasse die von einer anderen eigenen Exception erbt. Geben Sei drei polymorphe Möglichkeiten an, diese zu fangen.

public class MyException2 extends MyExeption1{}

... ansprechbar als
(MyException2)e
(MyException1)e
(Exeption)e

Schreiben Sie eine Klasse A die eine Referenz auf eine Klasse B enth‰lt. Im Konstruktor von A wird diese Referenz zugewiesen und ein Objekt passenden Typs erzeugt.
Die Klasse B enth‰lt eine Referenz auf A, welche beim Erzeugen von B an eine passende Klassenvariable zugewiesen wird.

 

public class A{
    private B b;
    
    public A(){
        b = new B();
    }
}

public class B{
    private static A a;
    
    public B(A a){
        this.a = a;
    }
}

Angenommen Sie haben ein Feld von 10 Objekten desselben Typs. Welche Variablenart hat garantiert für alle Instanzen denselben Wert? Geben Sei ein Beispiel für eine solche Variable. (Deklaration).

 

static array

Bsp:
private static Integer[] array = new Integer[10];

Die Ausnahme TippfehlerEx kann mittels einer geeigneten ... Konstruktors einen variablen Wert an ihre Elternklasse weiterreichen.

 

public class TippFehlerEx extends Exception{
    public TippFehlerEx(String s){
        super(s)
    }
}

Summenfunktion mit tertiären Ausdruck

    public int sum(int a){
        return a>0?a+sum(a-1):0;
    }

Fibunacci rekursiv mit tertiärem Ausdruck

    public int fibtert(int a){
        return a > 2 ? (fibtert(a-1)+fibtert(a-2)) : 1
    }

Pascalsches Dreieck

public class PDreieck {

public static int function_pascal(int zeile, int spalte) { // als Klassenmethode rufen ohne vorher Objekt instanziieren
    if (spalte==0 || spalte==zeile){
        return 1;
    }
    else {
        return function_pascal(zeile-1,spalte) + function_pascal(zeile-1,spalte-1);
    }
}

public static void main(String[] args) {
    for (int zeile=0; zeile<10; zeile++) {
        for (int spalte=0; spalte<=zeile; spalte++) {
            System.out.print(function_pascal(zeile, spalte) + " ");
        }
        System.out.println(); // Zeilenumbruch für nächste Zeile
    }

    int wert = function_pascal( 2 , 1);
        System.out.println("----------------------------" );
        System.out.println("Ergebnis ist "+ wert);
    }
}

 

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
----------------------------
Ergebnis ist 2

Fakultät rekursiv

public class FakuReku{

    public double fakrek(double n){
        if (n == 1){
            return 1;
        }
        else {
            return (n*fakrek(n-1));
        }
            
    }

}

Étudier