import Foundation
 
func getInputString(message: String) -> String{
    print(message, terminator: " : ");
    return readLine() ?? ""
}
 
func getInputInt(message: String) -> Int{
    return Int(getInputString(message: message)) ?? 0
}
 
protocol PersonProtocol {
    var firstName : String {set get}
    var lastName  : String {set get}
    var address  : String {set get}
    func fullName() -> String
}
class Person : PersonProtocol{
    var firstName : String
    var lastName : String
    var address : String
    init(firstName : String, lastName : String, address : String) {
        self.firstName = firstName
        self.lastName = lastName
        self.address = address
    }
    
    func fullName() -> String {
        var parts: [String] = []
        parts += [firstName]
        parts += [lastName]
        return parts.joined(separator: " ")
    }
}
protocol StudentProtocol {
    var school : String {set get}
    func getInformation() -> String
}
 
class Student : Person, StudentProtocol {
    var school: String = ""
 
    func getInformation() -> String {
        return "Perkenalkan nama saya \(fullName()), saya sekolah di \(school).\nMari belajar bersama!"
    }
}
print("Selamat datang di aplikasi Dicoding Member!")
print("--------------------------------------")
 
let firstName = getInputString(message: "Masukkan nama depan kamu")
let lastName = getInputString(message: "Masukkan nama belakang kamu")
let address = getInputString(message: "Masukkan alamat kamu")
let school = getInputString(message: "Masukkan nama sekolah / kampus kamu")
 
let member = Student(firstName: firstName, lastName: lastName, address: address)
member.school = school
 
print("--------------------------------------")
print(member.getInformation())
print("--------------------------------------")
print("Terima kasih, selamat datang kembali!")