Java Aufgaben :(

  • servus!
    ich bräuchte mal hilfe für ein paar java aufgaben, um meine note zu verbessern. ich will dabei nicht, dass mir jemand meine hausaufgaben macht, sondern lediglich hilfe dabei, da morgen abgabe ist... also soll sie doch jemand lösen :< (sonderaufgabe, nur 1 tag zeit, nichts zu faul gewesen die letzten tage ;))


    problem ist: in der theorie versteh ichs halbwegs, in der praxis jedoch gar nicht. andere hingegen werden diese aufgaben zum lachen finden und in 5min lösen und daher hoffe ich, mir hilft hier jemand

  • passt schon, habs gelöst bekommen.


  • willst du in etwa wissen wie das programm geschrieben wird oder lediglich nur die fragen beantwortet haben?
    zu den fragen muss man eigentlich nur im internet gucken, definitionen würden da schon ausreichen


    aufgabe 2 ist ein wenig unklar für mich, ich nehme mal an, dass etwas private deklariert werden soll.


    aufgabe 3: instanzvariable wird für die ganze klasse deklariert, im gegensatz zu der instanzvariable gibs noch die lokale variable die für methoden nützlich sind.
    Eine Methode ist die Hauptfunktion einer Klasse.
    Sie bestimmt hier wie ein Objekt sich verhält.

    Code
    public int methode(){return x;}


    heißt du gibst was wieder

    Code
    public void methode(int x){}


    heißt du gibst was ein

    Code
    public int methode(int x){return x;}


    du gibst was ein und es kommt auch was raus


    Konstruktoren sind spezielle Methoden eine Klasse
    sie heißen genau wie die Klasse selber aber ohne Rückgabewert
    Diese werden verwendet wenn man ein neues Objekt erstellen will


    Beispiel:


    Somit hat "neuesObjekt" den Typen "Bsp" und er gibt die Zahl 2 aus.



    Aufgabe 4:
    Manipulierende Methode ist eine Methode bei der etwas verändert wird


    zb

    Code
    public void manipul(){
    if(zahl<100)
        zahl+=100;
    }


    und sondierende methode gibt dir etwas zurück
    zb einen Zustand von einem Konto


    Code
    public int sondier(){
    return kontostand;
    }


    Aufgabe 5:
    getter und setter haben im endeffekt die selbe funktion wie die Manipulierende Methode und Sondierende Methode
    nur das sie mit den Funktionen "get" und "set" arbeiten
    get=Zustand ausgeben
    set=Zustand ändern bzw erstellen


    Aufgabe 6:
    Das Wort "this" macht man oft wenn man solche Situationen hat:


    Code
    class hallo{
     private int x; // instanzvariable
     public void method(int x){
         this.x = x;
     }
    }


    was du hier machst ist eigentlich folgendes:
    wir haben eine instanzvariable x
    wir haben noch eine lokale variable x
    was wir machen wollen ist die instanzvariable mit der lokalen ersetzen.
    da beide x heißen ist es schlecht wenn wir hinschreiben, dass x=x ist.
    das ist unsinn
    deshalb benutzt man this.x=x



    Aufgabe 7:
    Klassenvariable ist eine Variable für die gesamte Klasse und nicht für jedes Objekt einzeln.
    Jede Klassenvariable gilt für alle Objekte in der Klasse.
    Sie kann in der Klasse und den Methoden verändert werden (siehe Instanzvariable, ändern mit this)
    Klassenmethode ist eine Methode in einer Klasse.
    Du kennst sicherlich die Klasse math.
    in dieser sind einige Methoden enthalten.
    zb wenn du etwas berechnen willst oder das maximum oder minimum suchen willst
    math.max
    math.min
    math.sqrt


    sind Klassenmethoden
    Klasse.Methode
    somit kannst du die Methoden einer Klasse in einer anderen aufrufen.




    ich hoffe ich konnte deine fragen damit beantworten
    wenn nicht dann lass es mich wissen ;)




    so besser? :D

  • Zitat

    "jep hast recht. wie würdest du die erste aufgabe beantworten? mit der imperativen und prozeduralen programmierung, sowie kapselung?"


    imperative programmierung ist berechnung von sachen mittels schleifen
    zb for schleifen
    die berechneten sachen werden in variablen abgespeichert


    for(i=0;i<=10;i++)
    x=i*2;



    eine kapselung hier wäre eine verschachtelung von schleifen



    prozedurale programmierung ist programmieren in stücken
    zb du teilst deine aufgabe in stücke
    in deinem beispiel wären es
    eine methode bearbeitet die kunden, die andere die kundennr etc.
    eine kapselung hier wäre die klassen übergreifenden aspekte.
    kannst auf andere klassen zugreifen etc.


    siehe math.max ....

  • öhm naja, prozedural unterscheidet sich insofern von oo, als das keine klassen, keine objekte und somit keine kapselung hast.


    imperative sprachen (wie z.b. java) programmierst du *wie* etwas getan wird (wie berechnen, wo speichern, ...). im gegensatz zu deskriptiven sprachen, wo du nur sagst was getan werden soll (oft bei skriptsprachen, matlab, ...).


    btw: solche fragen beantwortet google auch ziemlich toll.

    The first microsoft-product that does not suck will be a vacuum-cleaner.

    Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music. [Kristian Wilson, Nintendo Inc., 1989]


  • imperative programmierung ist berechnung von sachen mittels schleifen


    -.-


    eine kapselung hier wäre eine verschachtelung von schleifen


    falsch


    imperative sprachen (wie z.b. java) programmierst du *wie* etwas getan wird (wie berechnen, wo speichern, ...). im gegensatz zu deskriptiven sprachen, wo du nur sagst was getan werden soll (oft bei skriptsprachen, matlab, ...).


    Meinst du nicht eher deklarative Sprachen?


    -------


    Programmiersprachen lassen sich in so genannte Programmierparadigmen (= Sichtweise, die zur Lösung eines Problems mittels einer Programmiersprache eingenommen wird) einordnen.


    • Programmierparadigmen

      • imperative

        • prozedurale (Fortran, Algol, Cobol, Basic, ...)
        • objektorientierte (Smalltalk, C++, Eiffel, ...)



      • deklarative

        • logische (Prolog)
        • funktionale (Lisp, ML, Scheme, Haskell, ..)




    Auf der einen Seite stehen die imperativen oder auch zustandsbehaftete Sprachen genannt. Die zeichnen sich dadurch aus, dass jedes Programm bei der Ausführung einen konkreten Zustand besitzt, welcher durch Anweisungen modifiziert wird (siehe Von Neumann Architektur).
    Wie Odio richtig sagt, muss man sich um technische Details (Speicherverwaltung etc.) in der Regel selber kümmern.


    Deklarative Sprachen auf der anderen Seite sind zustandsfrei. Nicht das "Wie" steht im Vordergrund, sondern viel mehr die Lösung eines Problems ohne dabei genau zu wissen, wie es technisch gesehen gelöst wird. In dem Zusammenhang könntest du dir mal das lambda calculus anschauen. Weitere Stichworte sind: keine Seiteneffekte, referentielle Transparenz, ...


    -----


    Falls du Kapselung in Verbindung mit objektorientierung meinst: Kapselung ist eines der Grundprinzipien von OOP und beschreibt die Sichtbarkeit von Klassenmembern (Attribute/Methoden) -> aka Zugriffsmodifizierer wie public, protected, private. Klassenmember können "nach außen" hin gekapselt werden ...