Arvutiteaduse instituut
  1. Kursused
  2. 2018/19 kevad
  3. Objektorienteeritud programmeerimine (LTAT.03.003)
EN
Logi sisse

Objektorienteeritud programmeerimine 2018/19 kevad

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhendid
  • Silumisest
  • Edasijõudnute rühm

Prakside kava

Tavarühmade materjal

  1. Praks 1
    1. Lugeda Sissejuhatus (alates "Esimene Java programm")
    2. Lugeda Java põhikonstruktsioonid
    3. IDEA setup + run application
    4. Ülesanded: *
  2. Praks 2
    1. Lugeda Objektid. Klassid.
    2. Ülesanded P4, P6, H2, H4
    3. IDE tricks: psvm, sout, alt+insert, rename symbol, ctrl+q, reformat code
    4. class imports, Arrays.toString, cli-args
    5. koduste tööde esitamisest
  3. Praks 3
    1. Lugeda Sõned. Failid. Listid.
    2. Ülesanded P1, P8, H3
    3. IDEA advanced: iter, fori, debugging
    4. code style: muutujate ja meetodite nimed
    5. value vs reference
  4. Praks 4
    1. Lugeda Polümorfism. Liidesed.
    2. Ülesanded P*
    3. List vs ArrayList? List.of, Arrays.asList, Collections.emptyList
    4. IDE tricks: extract method/var, ctrl+b/ctrl+alt+b, show usages, ctrl+alt+left/right, debugger eval expression
  5. Praks 5
    1. Lugeda Ülemklassid. Alamklassid. Abstraktsed klassid.
    2. praksis P* välja arvatud 4,5
    3. IDE tricks: ctrl+i, ctrl+o
    4. dynamic dispatch, super.m() vs this.m()
    5. git intro
  6. Git (kodus)
    1. Loe üldist git sissejuhatust (algusest kuni "How GitHub fits in")
      https://guides.github.com/introduction/git-handbook/
    2. Lahenda ülesandekomplekt HelloGit
    3. Huvilisetele pikem jutt, kuidas git toimib
      https://tom.preston-werner.com/2009/05/19/the-git-parable.html
  7. Praks 6
    1. TODO flatten datastreamide kirjutamine, writeUTF seletus
    2. Lugeda Vood.
    3. primitive size
    4. Ülesanded P4, H5, P8
    5. edasijõudnud: tcp/ip, network protocols
      https://github.com/mbakhoff/sockets-template
    6. IDE tricks: thread dump, Files.readAllBytes, Files.readString
    7. rühmatööde tutvustus
  8. Praks 7
    1. Lugeda Veahaldus.
    2. Ülesanded P3, P6, P9, H4, H8
    3. rethrow, runtime exceptionisse wrapimine
    4. IDE tricks: conditional breakpoint, exception breakpoint, ctrl+tab/ctrl+e/ctrl+n
  9. Praks 8
    1. Lugeda Lõimed.
    2. final fields
    3. Ülesanded ül 2, 3, 4, 5, 8
    4. deadlock näide, thread dump
      https://gist.github.com/mbakhoff/0fd51bfd653b778fcabc
    5. Executors fixedpool näide
    6. Item 66: Synchronize access to shared mutable data
  10. Praks 9
    1. Lugeda Graafika.
    2. Lugeda Sündmused.
    3. awt vs swing vs javafx
    4. Ülesanded: Graafika: P3,P6,H2; Sündmused P1,P4,H1,H3
    5. scene graph, layouts
  11. Praks 10
    1. Lugeda Andmestruktuurid.
    2. koduste ülesannete analüüs (bugid)
      https://github.com/mbakhoff/oop-samples/tree/master/bugs
    3. natural ordering. eksamil peab teadma: ArrayList, LinkedList, HashSet, TreeSet, LinkedHashSet, ArrayDeque, HashMap, TreeMap, LinkedHashMap
    4. Ülesanded P2, P4, P7
    5. edasijõudnud: "How does a hashmap work?"
      https://github.com/mbakhoff/hashmap-template

Edasijõudnute materjalid

  1. Socket I/O
    https://github.com/mbakhoff/sockets-template
  2. HashMap basics
    https://github.com/mbakhoff/hashmap-template
  3. Packaging + maven
    TODO swap with classpath-template, rewrite task1
    https://github.com/mbakhoff/maven-template
  4. Classpath, resource loading
    1. kompileeritud vs interpreteeritud
    2. https://github.com/mbakhoff/classpath-template
  5. KT1 kordamine
    1. fori vs iter, extract variable/parameter, täisarvudega jagamine, static fields, string equals vs ==, generics / raw types, instance vs static methods, dynamic dispatch, this.m() vs super.m(), twr, catch algoritm, Files.readAllLines, Files.write
    2. harjutused
      1. Voogude harjutustest ülesanded 1, 3, 4
      2. Nimede lühendamine
      3. veel üks KT näidisülesanne
  6. Crypto basics
    https://github.com/mbakhoff/crypto-template
  7. Inner classes, lambdas, method references
    1. Introduction https://github.com/mbakhoff/lambda-template
    2. Stream API, harjutused https://github.com/sim642/oop-lambda-template
  8. JDBC: H2 embedded, prepared statement, transactions
    https://github.com/mbakhoff/jdbc-template
  9. JPA, Hibernate ORM
    https://github.com/mbakhoff/jpa-template
  10. Annotations + reflection
    https://github.com/mbakhoff/reflection-template
  11. Testing with JUnit; Mock objects, constructor injection
    https://github.com/mbakhoff/testing-template
  12. Profiling with VisualVM; Garbage collection
    https://github.com/mbakhoff/profiling-template
  13. Processes
    https://github.com/mbakhoff/process-template
  14. Bitwise operators
    https://github.com/mbakhoff/bitwise-template
  15. Advanced synchronization
    https://github.com/mbakhoff/synchronization-template
  16. KT2 kordamine
    1. text vs binary streams, Files.readAllLines/write, list vs map vs set, File.exists vs Files.exists, exceptioni subclass loomine
    2. harjutused
      1. Voogude harjutustest ülesanne 6
      2. Erindite harjutustest ülesanded 2, 7
      3. veel üks KT näidisülesanne
  17. Visitor pattern
    https://github.com/sim642/oop-visitor-template
  18. TODO java.time
  19. Rühmatööde esitlused
  20. Eksamiks kordamine
    1. https://drive.google.com/open?id=16_FWqBiTEl1yNPBaLymfdA452kiIjXFf
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused