Skip to content

Commit 9a41308

Browse files
kotlin-samples-pusher-botdkrasnoff
authored andcommitted
test(samples): add new samples
1 parent fed3119 commit 9a41308

File tree

2 files changed

+106
-0
lines changed

2 files changed

+106
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
interface DrawingTool {
2+
val color: String
3+
fun draw(shape: String)
4+
fun erase(area: String)
5+
fun getToolInfo(): String
6+
}
7+
8+
class PenTool : DrawingTool {
9+
override val color: String = "black"
10+
11+
override fun draw(shape: String) {
12+
println("Drawing $shape using a pen in $color")
13+
}
14+
15+
override fun erase(area: String) {
16+
println("Erasing $area with pen tool")
17+
}
18+
19+
override fun getToolInfo(): String {
20+
return "PenTool(color=$color)"
21+
}
22+
}
23+
//sampleStart
24+
class CanvasSession(val tool: DrawingTool) : DrawingTool {
25+
override val color: String = "blue"
26+
27+
override fun draw(shape: String) {
28+
tool.draw(shape)
29+
}
30+
31+
override fun erase(area: String) {
32+
tool.erase(area)
33+
}
34+
35+
override fun getToolInfo(): String {
36+
return tool.getToolInfo()
37+
}
38+
}
39+
//sampleEnd
40+
fun main() {
41+
val pen = PenTool()
42+
val session = CanvasSession(pen)
43+
44+
println("Pen color: ${pen.color}")
45+
// Pen color: black
46+
47+
println("Session color: ${session.color}")
48+
// Session color: blue
49+
50+
session.draw("circle")
51+
// Drawing circle with pen in black
52+
53+
session.erase("top-left corner")
54+
// Erasing top-left corner with pen tool
55+
56+
println(session.getToolInfo())
57+
// PenTool(color=black)
58+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
interface DrawingTool {
2+
val color: String
3+
fun draw(shape: String)
4+
fun erase(area: String)
5+
fun getToolInfo(): String
6+
}
7+
8+
class PenTool : DrawingTool {
9+
override val color: String = "black"
10+
11+
override fun draw(shape: String) {
12+
println("Drawing $shape using a pen in $color")
13+
}
14+
15+
override fun erase(area: String) {
16+
println("Erasing $area with pen tool")
17+
}
18+
19+
override fun getToolInfo(): String {
20+
return "PenTool(color=$color)"
21+
}
22+
}
23+
24+
//sampleStart
25+
class CanvasSession(val tool: DrawingTool) : DrawingTool by tool {
26+
// No boilerplate code!
27+
override val color: String = "blue"
28+
}
29+
//sampleEnd
30+
fun main() {
31+
val pen = PenTool()
32+
val session = CanvasSession(pen)
33+
34+
println("Pen color: ${pen.color}")
35+
// Pen color: black
36+
37+
println("Session color: ${session.color}")
38+
// Session color: blue
39+
40+
session.draw("circle")
41+
// Drawing circle with pen in black
42+
43+
session.erase("top-left corner")
44+
// Erasing top-left corner with pen tool
45+
46+
println(session.getToolInfo())
47+
// PenTool(color=black)
48+
}

0 commit comments

Comments
 (0)