O předmětu

Programování v Javě je základní povinný předmět FIS. Naučíš se objektově orientované programování (OOP) od nuly na jazyce Java. Předmět tvoří základ pro většinu dalších IT předmětů.

Klíčové pojmy

Proměnné a datové typy:

  • Primitivní typy: int, long, double, float, boolean, char, byte, short
  • Referenční typy: String, pole (int[]), objekty
  • Autoboxing: intInteger, doubleDouble
Řídící struktury:
// Podmínky
if (x > 0) { ... } else if (x < 0) { ... } else { ... }

// Cykly
for (int i = 0; i < 10; i++) { ... }
while (podminka) { ... }
do { ... } while (podminka);
for (String s : seznam) { ... }  // foreach

// Switch
switch (hodnota) {
    case 1: ...; break;
    default: ...;
}

OOP — základní koncepty

Třída a objekt:

public class Osoba {
    // Atributy (fields)
    private String jmeno;
    private int vek;

    // Konstruktor
    public Osoba(String jmeno, int vek) {
        this.jmeno = jmeno;
        this.vek = vek;
    }

    // Metody
    public String getJmeno() { return jmeno; }
    public void setJmeno(String jmeno) { this.jmeno = jmeno; }

    @Override
    public String toString() {
        return jmeno + " (" + vek + ")";
    }
}

// Použití
Osoba o = new Osoba("Jan", 22);
System.out.println(o.getJmeno()); // Jan

Dědičnost:

public class Student extends Osoba {
    private String obor;

    public Student(String jmeno, int vek, String obor) {
        super(jmeno, vek);  // volání konstruktoru rodiče
        this.obor = obor;
    }

    @Override
    public String toString() {
        return super.toString() + " [" + obor + "]";
    }
}

Rozhraní (Interface):

public interface Tisknutelny {
    void tiskni();  // abstraktní metoda
    default String format() { return "výchozí"; }  // default metoda
}

public class Dokument implements Tisknutelny {
    @Override
    public void tiskni() { System.out.println("Tisknu..."); }
}

Abstraktní třída:

public abstract class Tvar {
    public abstract double plocha();  // musí přepsat potomek

    public void vypis() {
        System.out.println("Plocha: " + plocha());
    }
}

Kolekce

import java.util.*;

// ArrayList — dynamické pole
List seznam = new ArrayList<>();
seznam.add("alfa");
seznam.get(0);
seznam.size();
Collections.sort(seznam);

// HashMap — slovník klíč→hodnota
Map mapa = new HashMap<>();
mapa.put("alfa", 1);
mapa.get("alfa");
mapa.containsKey("alfa");
for (Map.Entry e : mapa.entrySet()) {
    System.out.println(e.getKey() + "=" + e.getValue());
}

// HashSet — množina (bez duplicit)
Set mnozina = new HashSet<>();
mnozina.add(5);
mnozina.contains(5);

Výjimky

try {
    int x = Integer.parseInt("abc"); // NumberFormatException
} catch (NumberFormatException e) {
    System.out.println("Chyba: " + e.getMessage());
} finally {
    // vždy se provede
}

// Vlastní výjimka
public class MojeVyjimka extends RuntimeException {
    public MojeVyjimka(String zprava) { super(zprava); }
}
throw new MojeVyjimka("Nastala chyba");

Práce se soubory

import java.io.*;
import java.nio.file.*;

// Čtení souboru
List radky = Files.readAllLines(Path.of("soubor.txt"));

// Zápis souboru
Files.writeString(Path.of("output.txt"), "obsah");

// BufferedReader pro velké soubory
try (BufferedReader br = new BufferedReader(new FileReader("soubor.txt"))) {
    String radek;
    while ((radek = br.readLine()) != null) {
        System.out.println(radek);
    }
}

Tipy pro zkoušku

  • Zapomeň na == pro String — vždy používej .equals()
  • null reference → NullPointerException, vždy kontroluj
  • Přetypování: (int) 3.7 = 3 (ořezává, nezaokrouhluje)
  • static metody/atributy patří třídě, ne instanci
  • final proměnná = konstanta (nelze přiřadit znovu)
  • Viditelnost: private < protected < public (package-private bez modifikátoru)

Doporučené zdroje

✏️ Upravit wiki obsah

Používej Markdown: ## Nadpis, **tučně**, `kód`, - odrážky, > citace

Heslo si vyžádej od správce wiki.