Please excuse my ignorance - I don't even know what VCL is - and perhaps I shouldn't even be sticking my neck in here but I'm going to anyway.... as quickly as I can...
Years ago I was a Clipper programmer. Way before OOPs. That's an extensible compilable dBase language, or was. Very looked down upon by C programmers and such, I think. But it was written in C and extensible into C or Pascal or Assembler and that's what one did - extend it with your own routines.
And with guidance from a certain guru whose name I've shamefully forgot but who wrote a series of books which were my bible, my programming skills grew and grew.
And my stock of written stuff grew and grew.
And my stock of re-usable code grew and grew.
And it became more and more obvious that I needed to write genereal-purpose functions just so I could re-use them.
And it became obvious that if I could include data in those functions it would be good.
And so on..... skilfully steered by this guru it became obvious that we needed to write the functions that are today called 'objects'.
And that's where I would - humbly, tentatively - say is the requirement, the need, the value, of OOPs.
In that vast palace of code, routines, functions that you have written yourself and borrowed from others and incorporated as yours there will grow certain 'entities' that are tremendously useful to you. Your own objects that you have an intimate understanding of.
And from this naturally developing understanding of objects would also come a natural appreciation of the value to you of some objects written by others.
And you'd gratefully seize them and include them in your armoury.
You would have made the shift from traditional programming to OOPs and would have an OOPs mindset. A change in the nature of your thought processes as complete as that which happens, say, when you fully assimilate recursion.
As the man says - explaining this to students wouldn't be easy. And they couldn't I suppose approach the subject from this direction, they'd want to, need to, jump straight in - not build up to it by experience.
Again, as the man says, approaching a new programming task may take considerable time and effort to see in an Object oriented way. Especially if you don't have the sort of slowly nurtured and naturally grown, deeply understood appreciation of OOPs that I've tried to indicate.
On the one hand you approach the task with a great bag of tools which contains 'depth', shall we say, with these powerful 'objects' in it and that bag of tools is your natural way of working and these 'tools' are as much a part of you as your fingers and toes.
And you'd just go to work naturally. OOPs not being a separate discipline to you but rather a natural outgrowth of your programming life, your experience. A very natural development. The logical progression of your own coding.
On the other hand you are hovering over the problem and trying to 'see it' in either or both of these two different ways: OOPs or trad. Trying from the beginning to use other people's theories, definitions, ideas, understandings.....
Pity the poor beginner, that's where they must be at...
So that's what I think.
Visual C and such killed Clipper.
I got lost in that horrible wasteland called User Support, network Support and constantly chasing understandings of Bill Gates latest release - wasting all my mental energy in that ridiculous trivia.
I never 'grew' my code to OOPs. I know nothing. I do nothing.
I am today confused by the plethora of programming languages and don't know where to start again.
Bemused by the apparent immense difficulty or even impossibility of having the control of the pc that we used to have back in those days.
Astounded by the apparent complete lack of a command language even as good as microsoft's batch language used to be far less one as beautiful as Digital's DCL was.
I retain an interest, though. Programming was the love of my life. I hope I haven't bored you all to tears and I hope I wasn't too far off the subject.
regards to all,
ab