I think you're confusing two different but related things.
An Abstract Data Type is a
black box with an interface that you can use. Implementation details are just that, implementation details, they're not part of the Abstract Data Type directly. A given ADT may have many different possible implementations.
So, I suggest you define your ADT first. Define a class, and the public methods. There's no inheritance, just a plain set of methods that a user can use. In doing so, you'll find there's something odd about these:
[4] Show Property Details
[5] Show all Property
[6] Show all Available Properties
The ADT shouldn't show anything at all. It should just provide the raw information that will be used by these
Show functions.
...you must store them in a linked list. During processing, they must also be kept in a linked list data structure. |
Don't get hung up on the linked list stuff.
C++ has a standard double threaded linked list class that's almost completely interchangeable with an dynamic array class, so it's no big deal. The same can be said about the queue.
It's implied you'll need something that represents a Leaser, and a Property. You're being asked to manage Leasers and Properties, so maybe that thing could be called PropertyManagement. If you separate out these 3 things, you'll find it helps in keeping things simple, as Leaser stuff goes in the Leaser ADT (things like name, billing detials, address, references ... whatever) and the Property ADT has property stuff (owner, contact, various addresses, ...), so PropertyManagement can just focus on those methods you list at the start.