v1 = .UndergroundTransport~New; v1~Name="Metro"; v1~Lines="5"; v1~Stops="109"; v2 = .RailTransport~New; v2~Name="Tram"; v2~Lines="28"; v2~Stops="1051"; v3 = .StreetTransport~New; v3~Name="Bus"; v3~Lines="129"; v3~Stops="4230"; SAY v1~Name " Numbers of lines" v1~Lines " Numbers of Stops" v1~Stops SAY v2~Name " Numbers of lines" v2~Lines " Numbers of Stops" v2~Stops SAY v3~Name " Numbers of lines" v3~Lines " Numbers of Stops" v3~Stops SAY SAY v1~Info v2~Info v3~Info ::CLASS PublicTransport ::ATTRIBUTE Name ::ATTRIBUTE Lines ::ATTRIBUTE Stops ::METHOD init self~name = arg (1) ::CLASS UndergroundTransport SUBCLASS PublicTransport ::METHOD Info SAY self~name ": That is the fullest metro!" ::CLASS RailTransport SUBCLASS PublicTransport ::METHOD Info SAY self~name ": That is a crazy Tram!" ::CLASS StreetTransport SUBCLASS PublicTransport ::METHOD Info SAY self~name ": That is a bouncy Bus!"