Göm menyn

TDDC77 / 729G90 Objektorienterad programmering

Extrauppgifter


Extrauppgifter

Här följer ett antal övningsuppgifter. Om inget annat anges ska du skriva ett program som löser uppgiften. De flesta uppgifter kommer från föreläsningarna. Det är starkt rekommenderat att du förstår och provar på alla uppgifter.

  • [loggning och kompilering] Från föreläsning 1: Koppla dig mot universitets server och kompilera ett "hello world" Java programm:
    1. öppna en ssh session mot "remote-und.ida.liu.se"
    2. välj/skappa en "demo" katalog, naviguera ditt
    3. skappa ett Java programm som skriver ut ett meddelande (använd dig av emacs). Du kan kolla upp denna "hello world"
    4. kompilera och kör programmet
    5. introducera några fel i programmet (e.g, ta bort en semikolon ";")
    6. försök att kompilera och läs meddelandet från kompilatorn
    7. repetera de sista två stegen ett antal gånger
  • [Strings, Java API]: Från föreläsning 3:
    1. öppna länken till Java standard API:et.
    2. hitta beskrivningen för Klassen (class) String.
    3. ladda ner filen Str.java
    4. för varje string metod (method) XXXX som finns i filen Str.java i form av "kursnamn.XXXX(...)":
      1. läs om metoden XXXX i String:s sidan av API:et
      2. kompilera filen Str.java och kör programmet
      3. ändra på programmet och repetera tills att du tycker att du har förstått vad metoden gör.
  • [Scanner, Java API]: Från föreläsning 3:
    1. öppna länken till Java standard API:et.
    2. hitta beskrivningen för Klassen (class) Scanner.
    3. ladda ner filen Scan.java
    4. för varje string metod (method) XXXX som finns i filen Str.java i form av "scan.XXXX(...)":
      1. läs om metoden XXXX i Scanner:s sidan av API:et
      2. kompilera filen Str.java och kör programmet
      3. ändra i programmet och repetera tills att du tycker att du har förstått vad metoden gör.
    5. ladda ner filen ScanStandard.java
    6. kompilera filen ScanStandard.java och kör programmet
    7. ändra i programmet och repetera tills att du tycker att du har förstått hur man använder sig av Scanner för att läsa in typer som String, int, double och boolean.
    • [Arrayer]: (Fö 4) Gå igenom, förstå, kompliera och kör:
      1. "arrayer och slingor"
      2. ändra på programmerna, prova med andra typer och kombinationer
    • [Slingor]: Från föreläsning 4:
      1. Skapa ett Java program som använder en "while" loop för att skriva ut multiplikations tabellen för 5, från 1 till 100 (dvs. 1x5= 1, 2x5=10, etc).
      2. Använd dig av en "do while" loop istället.
      3. Använd dig av en "for" loop istället.
    • [Skuggning]: (Fö 5) Gå igenom, förstå, kompliera och kör:
      1. "Scope 1"
      2. "Scope 2"
      3. ändra på programmerna, prova med andra typer och kombinationer
  • [metoder, rekursion, command line]: Från föreläsning 5,6,7:
    1. Skapa ett Java program som heter "Factorial" och som har två metoder:
      1. den vanliga metoden "void main(String[] args)", och
      2. en till metod "int factorial(int n)"
    2. Man ska anroppa programmet med "java Factorial x" där "x" är ett heltal
    3. main metoden ska skicka heltalet till "factorial" metoden, sen ska main skriva ut resultatet.
    4. "factorial" metoden ska jämföra argumentet "n" mot 1. Om den är mindre returnerar den 1.
    5. annars ska den returnera "n * factorial (n-1)"
    6. prova med olika heltal. Ni ska få 1 för 1, 2 för 2, 6 för 3, 24 för 4, 120 för 5, etc
  • [ADT]: Från föreläsning 7:
    1. Implementera en stack med:
      1. En "void push(String)" metod,
      2. En "String pop()" metod,
      3. En "boolean isEmpty()" metod,
      4. Du kan anta att stacken kommer ha "MAX" String värden, där "MAX" än en konstant som du kan ändra på
    2. Implementera en kö med:
      1. En "void enqueue(String)" metod,
      2. En "String deque()" metod,
      3. En "boolean isEmpty()" metod,
      4. Du kan anta att stacken kommer ha "MAX" String värden, där "MAX" än en konstant som du kan ändra på
      5. I din implementation, oavset körningen, man ska alltid kunna spara upp till "MAX" element i din kö,
  • [Objekt, Klass, statisk]: Gör om förra uppgifter för stacken. Skapa istället en klass "Stack" och instantiera flera stack instanser i en main (main metoden ska vara i en separat klass, e.g. "Driver"). Prova med några push och pop. Kommer du att få samma beteende om du använder dig av statiska variabler istället för instans variabler i din stack implementation?

  • [Arv (inheritance), åtkomst (access)]: Läs denna tutorial om inheritance. Skapa en driver klass där main metoden instansiera två "Bicycle" och två "Mountain Bike". Finns det metoder som en Bicycle har men inte en Mountain Bike? vice versa? Experimentera med att anroppa på metoder och skriv ut värdena på de olika fälterna. Ändra instans variablerna till private. Hur kan du skriv ut deras värden från Driver klassen?
  • [Arv (inheritance), åtkomst (access),Kollektioner (Collections)]: Du kan lösa HT15s tenta!.


  • Sidansvarig: Sahand Sadjadee
    Senast uppdaterad: 2018-08-16