A UserList that HAS-A List

The complete source of inheritance_userlist.ek9, compiled by the EK9 compiler. Shown on inheritance.html.

#!ek9
defines module site.inheritance.userlist

  defines class

    User
      name as String: String()

      User()
        -> name as String
        this.name: name

      default User()

      isValid() as pure
        <- rtn as Boolean: name?

      default operator ?

    UserList
      users as List of User: List()  // HAS-A relationship

      addIfValid()
        -> user as User
        if user.isValid()
          users += user
      // Clear separation: UserList uses List
      // Not confused with List itself
      // Can change storage (Set? Array?) easily

      size() as pure
        <- rtn as Integer: length users

      default operator ?

  defines program

    ValidUsers()
      validUsers <- UserList()
      validUsers.addIfValid(User("Steve"))
      validUsers.addIfValid(User())
      Stdout().println(`Valid users: ${validUsers.size()}`)

Download inheritance_userlist.ek9

Output

Valid users: 1