Skip to content

Commit

Permalink
Delegates example
Browse files Browse the repository at this point in the history
  • Loading branch information
jesperancinha committed Nov 9, 2023
1 parent 9e62d2b commit 01a90db
Show file tree
Hide file tree
Showing 7 changed files with 140 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package org.jesperancinha.ktd

import java.time.LocalDateTime

interface Person {
val name: String
val address: String
}

interface Card {
val cardNumber: Long
val expiryDate: LocalDateTime
}

data class Client(
override val name: String,
override val address: String
) : Person

data class DebitCard(
override val cardNumber: Long,
override val expiryDate: LocalDateTime
) : Card

class Account(
person: Person,
card: Card,
val number: String
) : Person by person, Card by card

class Delegates {
companion object {
@JvmStatic
fun main(args: Array<String> = emptyArray()) {
val account = Account(
Client(
name = "João",
address = "World"
),
DebitCard(
cardNumber = 1111111111111111,
expiryDate = LocalDateTime.now()
),
number = "AAABBB12312313-3243242-23432"
)
println(account.number)
println(account.name)
println(account.address)
println(account.cardNumber)
println(account.expiryDate)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.jesperancinha.ktd

import org.jesperancinha.ktd.crum5.Patisserie
import org.jesperancinha.ktd.delegates.Account

class Main {
companion object {
Expand All @@ -14,6 +15,8 @@ class Main {
WarehouseManager.main()
TailRec.main()
FloatVsDouble.main()
Delegates.main()
Account.main(emptyArray())
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.jesperancinha.ktd.delegates;

import java.time.LocalDateTime;

public record Account(
Person person,
Card card,
String number

) implements Card, Person {
@Override
public LocalDateTime expiryDate() {
return card.expiryDate();
}

@Override
public Long cardNumber() {
return card.cardNumber();
}

@Override
public String name() {
return person.name();
}

@Override
public String address() {
return person.address();
}

public static void main(String[] args) {
var account = new Account(
new Client(
"João",
"World"
),
new DebitCard(
1111111111111111L,
LocalDateTime.now()
),
"AAABBB12312313-3243242-23432"
);
System.out.println(account.number);
System.out.println(account.name());
System.out.println(account.address());
System.out.println(account.cardNumber());
System.out.println(account.expiryDate());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package org.jesperancinha.ktd.delegates;

import java.time.LocalDateTime;

public interface Card {
LocalDateTime expiryDate();

Long cardNumber();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.jesperancinha.ktd.delegates;


public record Client(String name, String address) implements Person{
@Override
public String name() {
return name;
}

@Override
public String address() {
return address;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.jesperancinha.ktd.delegates;

import java.time.LocalDateTime;

public record DebitCard(Long cardNumber, LocalDateTime expiryDate) implements Card{}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.jesperancinha.ktd.delegates;

public interface Person {
String name();

String address();
}

0 comments on commit 01a90db

Please sign in to comment.