class Auto(val merk: String, val model: String, var jaar: Int) { // primary
// Init block (werkt in constructor)
init {
require(jaar > 1900) { "Ongeldig jaar!" }
}
// Secondary constructor
constructor(merk: String, model: String) : this(merk, model, 2020)
// Property (eigenschap)
var km: Int = 0
private set // Alleen veranderbaar binnen class
// Method
fun rijden(kmToevoegen: Int) {
km += kmToevoegen
}
fun infoGeven(): String {
return "$jaar $merk $model, KM: $km"
}
// Override toString (optioneel)
override fun toString() = infoGeven()
}
// Gebruik
val auto1 = Auto("Toyota", "Corolla", 2022)
auto1.rijden(150)
println(auto1.infoGeven()) // 2022 Toyota Corolla, KM: 150
val auto2 = Auto("BMW", "3 Serie") // secondary constructordata class Persoon(
val naam: String,
val leeftijd: Int,
val stad: String = "Istanbul" // default waarde
)
// Gebruik
val persoon1 = Persoon("Ahmet", 30)
val persoon2 = Persoon("Ahmet", 30, "Ankara")
val persoon3 = persoon1.copy(leeftijd = 31) // kopiëren met wijziging
println(persoon1) // Persoon(naam=Ahmet, leeftijd=30, stad=Istanbul)
println(persoon1 == persoon2) // false (stad verschilt)
println(persoon1.component1()) // naam (voor destructuring)
// Destructuring
val (naam, leeftijd, stad) = persoon1
println("$naam $leeftijd jaar oud, $stad") // Ahmet 30 jaar oud, Istanbulabstract class Vorm {
abstract fun oppervlakte(): Double
}class Rechthoek(val breedte: Double, val hoogte: Double) : Vorm() {
override fun oppervlakte() = breedte * hoogte
}val vorm: Vorm = Rechthoek(5.0, 10.0)
println(vorm.oppervlakte()) // 50.0interface KanVliegen {
fun vlieg() = println("Vliegt!") // default
fun maxSnelheid(): Int // abstract
}
interface KanZwemmen {
fun zwem()
}
class VliegendeAuto(merk: String) : Voertuig(merk), KanVliegen, KanZwemmen {
override fun maxSnelheid() = 300
override fun zwem() = println("Zwemmen in zee!")
}
val vliegend = VliegendeAuto("Tesla")
vliegend.vlieg() // Vliegt!
vliegend.zwem()sealed class Resultaat {
data class Succes(val data: String) : Resultaat()
data class Fout(val bericht: String) : Resultaat()
object Laden : Resultaat() // singleton
}
fun verwerk(resultaat: Resultaat) = when (resultaat) {
is Resultaat.Succes -> println("Data: ${resultaat.data}")
is Resultaat.Fout -> println("Fout: ${resultaat.bericht}")
Resultaat.Laden -> println("Laden...")
}
// Gebruik
verwerk(Resultaat.Succes("Voltooid"))object Database {
fun verbind() = println("Verbonden")
}
Database.verbind() // direct toegangclass Fabriek {
companion object {
fun nieuweAuto() = Auto("Ford", "Focus")
}
}
val auto = Fabriek.nieuweAuto()enum class Richting { NOORD, ZUID, OOST, WEST }def groet(naam):
print(f"Hallo, {naam}!")
# Aanroepen
groet("Ahmet") # Uitvoer: Hallo, Ahmet!def welkom():
return "Welkom!"
print(welkom()) # Uitvoer: Welkom!def optellen(a, b):
return a + b
print(optellen(5, 3)) # 8def groet(naam="Gast"):
print(f"Hallo, {naam}!")
groet() # Hallo, Gast!
groet("Ayşe") # Hallo, Ayşe!def stel_voor(naam, leeftijd, stad):
print(f" {naam}, {leeftijd} jaar oud, woont in {stad}.")
stel_voor(stad="Istanbul", leeftijd=30, naam="Mehmet")def som(*getallen):
return sum(getallen)
print(som(1, 2, 3, 4, 5)) # 15
def info(**kwargs):
for sleutel, waarde in kwargs.items():
print(f" {sleutel}: {waarde}")
info(naam="Ali", leeftijd=25, beroep="Ingenieur")def kwadraat(getal):
return getal ** 2
resultaat = kwadraat(4)
print(resultaat) # 16def deling_operatie(a, b):
quotiënt = a // b
rest = a % b
return quotiënt, rest
quotiënt, rest = deling_operatie(10, 3)
print(quotiënt, rest) # 3 1lambda parameters: expressiekwadraat = lambda x: x ** 2
print(kwadraat(5)) # 25
# Lijstelementen verdubbelen
getallen = [1, 2, 3, 4]
verdubbeld = list(map(lambda x: x * 2, getallen))
print(verdubbeld) # [2, 4, 6, 8]
# Even getallen filteren
even = list(filter(lambda x: x % 2 == 0, getallen))
print(even) # [2, 4]studenten = [("Ahmet", 85), ("Ayşe", 92), ("Mehmet", 78)]
gesorteerd = sorted(studenten, key=lambda student: student[1], reverse=True)
print(gesorteerd) # [('Ayşe', 92), ('Ahmet', 85), ('Mehmet', 78)]def optellen(a, b):
"""
Telt twee getallen op en geeft het resultaat terug.
Args:
a (int/float): Eerste getal
b (int/float): Tweede getal
Returns:
int/float: Som
"""
return a + bclass MijnThread extends Thread {
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println("Thread " + getName() + ": Stap " + i);
try {
Thread.sleep(1000); // Pauzeer 1 seconde
} catch (InterruptedException e) {
System.out.println("Thread onderbroken!");
}
}
}
}
public class ThreadVoorbeeld {
public static void main(String[] args) {
MijnThread thread1 = new MijnThread();
MijnThread thread2 = new MijnThread();
thread1.start(); // Start de eerste thread
thread2.start(); // Start de tweede thread
}
}class MijnRunnable implements Runnable {
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println("Runnable Thread: Stap " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println("Runnable onderbroken!");
}
}
}
}
public class RunnableVoorbeeld {
public static void main(String[] args) {
MijnRunnable runnable = new MijnRunnable();
Thread thread1 = new Thread(runnable, "Runnable-1");
Thread thread2 = new Thread(runnable, "Runnable-2");
thread1.start();
thread2.start();
}
}import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ExecutorVoorbeeld {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(2); // Threadpool met 2 threads
Runnable taak = () -> {
for (int i = 1; i <= 3; i++) {
System.out.println("Taak in thread " + Thread.currentThread().getName() + ": Stap " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println("Taak onderbroken!");
}
}
};
// Voer twee taken uit
executor.submit(taak);
executor.submit(taak);
executor.shutdown(); // Sluit de executor na afronding
}
}public class LambdaVoorbeeld {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
for (int i = 1; i <= 5; i++) {
System.out.println("Lambda Thread: Stap " + i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
System.out.println("Lambda onderbroken!");
}
}
});
thread.start();
}
}<?php
$leeftijd = 20;
if ($leeftijd >= 18) {
echo "Je bent oud genoeg om te stemmen!";
} else {
echo "Je bent nog te jong om te stemmen.";
}
?><?php
$score = 85;
if ($score >= 90) {
echo "Uitstekend! Je hebt een A.";
} elseif ($score >= 80) {
echo "Goed gedaan! Je hebt een B.";
} elseif ($score >= 70) {
echo "Niet slecht! Je hebt een C.";
} else {
echo "Oefen nog wat meer.";
}
?><?php
$dag = "maandag";
switch ($dag) {
case "maandag":
echo "Begin van de werkweek!";
break;
case "vrijdag":
echo "Bijna weekend!";
break;
case "zondag":
echo "Rustdag!";
break;
default:
echo "Gewoon een dag.";
break;
}
?><?php
$isIngelogd = true;
$bericht = $isIngelogd ? "Welkom terug!" : "Log in om verder te gaan.";
echo $bericht;
?><?php
$leeftijd = 16;
$heeftToestemming = true;
if ($leeftijd >= 18) {
echo "Je mag de film bekijken.";
} elseif ($leeftijd >= 16 && $heeftToestemming) {
echo "Je mag de film bekijken met toestemming.";
} else {
echo "Toegang geweigerd.";
}
?>