Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations TouchToneTommy on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

To newbies - OOP is sooo different

Status
Not open for further replies.

johnk

MIS
Jun 3, 1999
217
US
In '96 we made the fateful decision to make OOP and distributed multi-tier architecture our only architecture.&nbsp;&nbsp;In my 5th decade in this field, this is the very first big new thing that wasn't a logical progression from my past experience.<br><br>So, a tip to all experienced programmers who are at the entry point of OOP.&nbsp;&nbsp;Don't try to continually compare it with the way you used to do it.&nbsp;&nbsp;Event driven and multi-tier structures absolutely bring about some loss of control the programmer has over the user.&nbsp;&nbsp;No more orderly sequences of logical operations where the user can only do next what the programmer provided.&nbsp;&nbsp;An object you need to use may be in the next county and recently changed by another programmer.<br><br>But the end results are worth it.&nbsp;&nbsp;Just pay attention to what the academics and experienced practioners are saying.&nbsp;&nbsp;Good luck. <p>John Kisner<br><a href=mailto:jlkisner@jlkisner.com>jlkisner@jlkisner.com</a><br><a href= > </a><br>
 
In my opinion OOP is just another way of organizing and representing the procedual control, everything is encapulatated, everything has its place, and one componet doesnt need to know whats inside of another. etc. <p>Karl<br><a href=mailto:kb244@kb244.8m.com>kb244@kb244.8m.com</a><br><a href= </a><br>Experienced in , or have messed with : VC++, Borland C++ Builder, VJ++6(starting),VB-Dos, VB1 thru VB6, Delphi 3 pro, Borland C++ 3(DOS), Borland C++ 4.5, HTML, ASP(somewhat), QBasic(least i didnt start with COBOL)
 
I'd agree with John OO dev is far different than procedural to say that the OOP is another way of organising the procedural control is off base, to be nice..<br><br>There is no real procedural control as, say a COBOL programmer would understand it. Everything is an object in OOP, a concept which has caused us no end of problems.<br><br> <p>Cal<br><a href=mailto: > </a><br><a href= > </a><br>
 
Of course every object in some way has procedual code within them. such as C++, in classes hold definitinos for functions and what not, and those functions contain procedual code, however the exception is those funtion's codes are hidden from the rest of the world. <p>Karl<br><a href=mailto:kb244@kb244.8m.com>kb244@kb244.8m.com</a><br><a href= </a><br>Experienced in , or have messed with : VC++, Borland C++ Builder, VJ++6(starting),VB-Dos, VB1 thru VB6, Delphi 3 pro, Borland C++ 3(DOS), Borland C++ 4.5, HTML, ASP(somewhat), QBasic(least i didnt start with COBOL)
 
OOP is, in fact, different.&nbsp;&nbsp;Certainly different from all non-OOP architectures.<br><br>The title of this forum - Learning OOP - made me think back to '96 when we made the seemingly obvious choice to adopt OOP and multi-tier architecture.&nbsp;&nbsp;It turned out, for us, to be a long and difficult journey.&nbsp;&nbsp;We did successfully reach our destination.&nbsp;&nbsp;But the process was far different than anything our previous 35 years of application development had prepared us for.&nbsp;&nbsp;I'm not an academic and am mostly self taught (like many in our field).&nbsp;&nbsp;So I'm not at all sure that I have anything to here to offer.&nbsp;&nbsp;But I'm willing to share to any who might be interested.<br><br>This was also our entry into event driven programming.&nbsp;&nbsp;The combination made for a severe test for our small group of business application programmers.&nbsp;&nbsp;For the record we are now 100% Windows, VB & multi-tier.<br><br>We found some outstanding books.&nbsp;&nbsp;We also enjoyed the services of a pioneering consultant who actually understood some differences between the academic OOP models and more practical models.&nbsp;&nbsp;In spite of this, we struggled for months and months.&nbsp;&nbsp;Part of this was due to the added complexities of managing projects with multiple programmers supplying objects to a common project.&nbsp;&nbsp;Part was due to not appreciating the need to change our design approach.&nbsp;&nbsp;No telling what all the rest was due to.<br><br>An individual programmer writing single user apps probably could do well by just learning a new set of rules.&nbsp;&nbsp;Writing reusable multi-use objects which execute efficiently over different network arrangements and even function effectively with different RDBMSs is something else.&nbsp;&nbsp;Compound this by having several programmers checking out and modifying shared objects and you have the basis for some real confusion.<br><br>I'd love to hear from others who have, for better or worse, managed to complete some OOP projects.&nbsp;&nbsp;This is an important architecture, one that IMHO will someday dominate.&nbsp;&nbsp;And, unless our difficult experience turns out to be invalid, requires some significant new ways of thinking.<br><br>Also I'd love to see questions from rookies and oldies alike.&nbsp;&nbsp;I sometimes feel like I've been working in isolation in a strange land using a strange language. <p>John Kisner<br><a href=mailto:jlkisner@jlkisner.com>jlkisner@jlkisner.com</a><br><a href= > </a><br>
 
I am confused as to what aspect of OOP as it applies to whatever your goals are, OOP has been around at a programming language level, far as I know the first OOP-capable language I've ever come accross was C++, due to OOP is what made C++ completely different from C.&nbsp;&nbsp;But I am confused as to where you are applying your knowledge of Object Oriented programming? I guess I would not know since I've started out in professional world using most tools that had OOP already built into them , to the sense that you could say I grew up around it, using Classes in C++, creating activeX controls in VC++, using VB, etc. In my mind its nothing more than a concept and a way of working, breaking things down into much more manageble and useful parts. <p>Karl<br><a href=mailto:kb244@kb244.8m.com>kb244@kb244.8m.com</a><br><a href= </a><br>Experienced in , or have messed with : VC++, Borland C++ Builder, VJ++6(starting),VB-Dos, VB1 thru VB6, Delphi 3 pro, Borland C++ 3(DOS), Borland C++ 4.5, HTML, ASP(somewhat), QBasic(least i didnt start with COBOL)
 
Hi John,<br><br>We are at the start of writing an online trading system for a client using Java, C++ and CORBA. We have just got sign off on the Tech Spec a few days ago and are starting to code (3 months work for 6 people). <br><br>Myself and another guy where asked to design the system - it was a nightmare- many late nights over the last 4 weeks. Trying to learn CORBA, Java, OOP and Stock Trading all at once was/is a nightmare. Don't know how the design will hold up - I'll be working late through most of the summer.<br><br>We keep applying VB/DBMS concepts to the design - asking questions like &quot;what about performance of this obejct architecture?&quot; - &quot;is this method belong to class A or class B&quot;. It very difficult to change the mind set.<br><br>Three of use have come from the VB, DCOM area - so it will be interesting to see hopw we get on. I'll keep you posted.<br><br> <p>Cal<br><a href=mailto: > </a><br><a href= > </a><br>
 
Not sure if this helps you but if you were ever getting ready to take a microsoft certification exam, a major part in almost all the exams is project planning, the way microsoft likes to do it, is take every single funtionality and put it in its own object or space, like on the internet you can have a 3-tier application, which typically consists of 3 services<br>* User services, on the client machine typically a webbrowser<br>* Bussiness Service, usally on the Webserver<br>* DataServer , Typically on a database server (such as SQL)<br><br>but one thing they do in each service is to encapsulate literally everything, almost to the point of making 3 different ActiveX controls, one for adding, one for deleting, one for viewing, rather than throwing it into one.<br><br>My point is I think you need to identify your goals and takes, then give a single, or group of related task to a class, making the exposed portion as minimal as possible so that you can have each class use each other with minimal effort. <p>Karl<br><a href=mailto:kb244@kb244.8m.com>kb244@kb244.8m.com</a><br><a href= </a><br>Experienced in , or have messed with : VC++, Borland C++ Builder, VJ++6(starting),VB-Dos, VB1 thru VB6, Delphi 3 pro, Borland C++ 3(DOS), Borland C++ 4.5, HTML, ASP(somewhat), QBasic(least i didnt start with COBOL)
 
Thanks Calahans.&nbsp;&nbsp;I, and I expect others, will be very interested in your progress.&nbsp;&nbsp;Please feel free to run any issues though here & I'll try to respond with any similar experiences.<br><br>And thanks Karl.&nbsp;&nbsp;You are right on with your comments.&nbsp;&nbsp;But the devil is in the particulars.&nbsp;&nbsp;For instance, the detail design coordination it takes to trap RDBMS errors in the DS tier, then pass them to the BS tier, then the BS tier reads them and sends them along to the US tier, and then the user response must reverse the whole process.&nbsp;&nbsp;Every module coder must faithfully follow the error handling standards or chaos reigns.&nbsp;&nbsp;In earlier architectures deviation from standards was not good, but the greater consideration was if it worked well.<br><br>An example where current reality requires deviation from good conceptual models.&nbsp;&nbsp;True OOP design would have us instantiate a BS object for every single item in an inventory file, ready to respond instantaneously to any service request.&nbsp;&nbsp;We look forward to the time of large enough RAM to make that practical.&nbsp;&nbsp;In the meantime we have to provide fast response on existing LANs where we instantiate objects only when called for. <p>John Kisner<br><a href=mailto:jlkisner@jlkisner.com>jlkisner@jlkisner.com</a><br><a href= > </a><br>
 
hmm sounds like fun, good luck. <p>Karl<br><a href=mailto:kb244@kb244.8m.com>kb244@kb244.8m.com</a><br><a href= </a><br>Experienced in , or have messed with : VC++, Borland C++ Builder, VJ++6(starting),VB-Dos, VB1 thru VB6, Delphi 3 pro, Borland C++ 3(DOS), Borland C++ 4.5, HTML, ASP(somewhat), QBasic(least i didnt start with COBOL)
 
OOAD is not really language specific, although once you choose a development language you must work within its domain. For instance in C++ you can override operators but in Java you can't.<br><br>Even with these language differences most of the basic tenets still hold true. I won't even attempt a full list but some big ones are atomicity, encapsulation and patterns.<br><br>While the industry complains about the lack of OOP's delivery of 'code reuse' promise, I have seen it work for years in the way it was intended. The complaints stem from ideals that were never really implied.<br><br>For the projects I have been involved in, OOAD and OOP have delivered 'BIG TIME'. It is extremely powerful and a great tool for problem solving. It is however just a tool and therefor limited by the expertise of the user. I have been a student of OOAD and OOP for 11 years... I'm still trying to catch up!<br><br>&quot;But that's just my opinion... I could be wrong&quot;<br><br>-pete
 
In my opinion OOP is nothing more than a concept, and a way of thinking and organizing <p>Karl<br><a href=mailto:kb244@kb244.8m.com>kb244@kb244.8m.com</a><br><a href= </a><br>Experienced in , or have messed with : VC++, Borland C++ Builder, VJ++6(starting),VB-Dos, VB1 thru VB6, Delphi 3 pro, Borland C++ 3(DOS), Borland C++ 4.5, HTML, ASP(somewhat), QBasic(least i didnt start with COBOL)
 
Karl,<br><br>I'm just trying to share my experience.&nbsp;&nbsp;We have been through a long, difficult, even traumatic process to adapt to the new technology required for OOP.&nbsp;&nbsp;In fact, for us it was nothing less than a culture change.&nbsp;&nbsp;Old timers like myself have to do a *lot* of adapting to be successful with OOP.&nbsp;&nbsp;<br><br>By newbies I meant newcommers to OOP, not programmers with little experience.&nbsp;&nbsp;In fact, our entry level programmers become productive in OOP much faster than those of us who had to break old habits.<br><br>Another thought, our first OOP project was also our first time with Windows and its event driven graphic interface.&nbsp;&nbsp;It could be that more of our difficulty was due to this than to OOP.<br><br>Also, the task of project coordination between members of an OOP project team is a much bigger one than anything in our prior experience.&nbsp;&nbsp;&nbsp;And that was a major factor in the amount of effort and time required.<br><br>I'd really like to hear from others about their experiences with OOP projects.&nbsp;&nbsp;Probably some breezed right through.&nbsp;&nbsp;Maybe we are just slow.&nbsp;&nbsp;But I have the feeling that many developers who have yet to make the jump are in for a difficult experience, and I'd like to help them have an easier time than we did. <p>John Kisner<br><a href=mailto:jlkisner@jlkisner.com>jlkisner@jlkisner.com</a><br><a href= > </a><br>
 
I see , so it was more of understanding the new enviroment, rather than just change the currently known language into a different concept. <p>Karl<br><a href=mailto:kb244@kb244.8m.com>kb244@kb244.8m.com</a><br><a href= </a><br>Experienced in , or have messed with : VC++, Borland C++ Builder, VJ++6(starting),VB-Dos, VB1 thru VB6, Delphi 3 pro, Borland C++ 3(DOS), Borland C++ 4.5, HTML, ASP(somewhat), QBasic(least i didnt start with COBOL)
 
I'm a MCSE and a abselute beginner in programming. Just understand the concepts and know some term' (including oop). As I am reading about diffrent langugeas, I can't decide with which one to start.<br><br>Yes, I know some &quot;Basic&quot; but would like to start off with something thats in. Besides,I want to star off thinking &quot;objectivly&quot;<br><br>I am thinking of some kind of programing that I can intergrate with my networking experiance, and which has a vast api (or what ever you call it) supporting telephony.<br><br>I will appriciate any insight , suggestion etc. how to go about advancing my knowledge. I'm doing this on my own reading books cbt etc.<br><br>Thanks in advance!<br><br>Dery
 
Dery,&nbsp;&nbsp;Attempts to compare programming languages (and development environments) have sparked some very lively debates.&nbsp;&nbsp;You could check other forums on this site.&nbsp;&nbsp;Many of us become quite partial to what we know works for us.<br><br>The answer to your question would need to take into account several factors including the nature of likely applications, your employer and existing choices already made there, etc.<br><br>My bias is with Visual Basic (with COM and a good RDBMS).&nbsp;&nbsp;Micro$oft identifies it as their main direction, so it will have considerable staying power.&nbsp;&nbsp;Alternatives include C++, JAVA and several others. <p>John Kisner<br><a href=mailto:jlkisner@jlkisner.com>jlkisner@jlkisner.com</a><br><a href= > </a><br>
 
I use mainly vC++, C++(other than the M$ IDE), Visual Basic, InterDev, etc, I write in the language that best fits my task, and so far different ones I use for different objectives, and to my curiousity, how can one be an MCSE and be a complete newbie to programming, isnt MCSE Microsoft Certified Software Engineer, and if so doesnt that require at least 2 passed exams of a Microsoft Programming language, I'm working for my MCP , which I will get when I pass the InterDev exam, then I'm going after VC++ or VB so I Can get my MCSD (... Solutions Developer). Just thought it was something curious for me to figure out. <p>Karl<br><a href=mailto:kb244@kb244.8m.com>kb244@kb244.8m.com</a><br><a href= </a><br>Experienced in , or have messed with : VC++, Borland C++ Builder, VJ++6(starting),VB-Dos, VB1 thru VB6, Delphi 3 pro, Borland C++ 3(DOS), Borland C++ 4.5, HTML, ASP(somewhat), QBasic(least i didnt start with COBOL)
 
Thanx for the reply,<br><br>KB, MCSE requires 4 core exams. Networking ess, NT 4.0 workstation, Server, Server in the enterprise, and 2 electives from a list that contain some programming. SQL ,C++ etc. I took TCP/IP and proxy as elective.<br><br>Dery
 
Dear kb244,<br><br>from microsoft.com:<br><br>For network professionals, Microsoft offers the Microsoft Certified Systems Engineer (MCSE) credential. MCSEs are qualified to effectively plan, implement, maintain, and support information systems in a wide range of computing environments using the Microsoft Windows NT® Server and the Microsoft BackOffice® integrated family of server products.
 
John,<br><br>It's good to see you back in the posting arena, along with the others that were in a heavy discussion in the 3-tier application development thread that you started many months back.&nbsp;&nbsp;I guess I'll throw in my two cents worth here on the OOP and a little bit of 3-tier system.<br><br>Back a few months ago, I ran across the thread mentioned above and got more and more ideas from reading posts here.&nbsp;&nbsp;Since then we have designed and implemented the OOP stuff in a 3-tier environment.<br><br>We had a product that started off as a remote database system where many stations setup an ODBC connection to use the application.&nbsp;&nbsp;Since then the product has undergone some MAJOR changes under the hood.<br><br>We have implemented XML inside of our business objects on the client and server side.&nbsp;&nbsp;TCP/IP is the protocol used to pass the XML data across the network.&nbsp;&nbsp;All of our client side objects are written in Visual BASIC and all the logic is encapsulated inside of these objects.&nbsp;&nbsp;They also encapsulate the Winsock calls and the building of the XML.&nbsp;&nbsp;As an application programmer, you would never know where the information was coming from or that it was even using XML or Winsock technologies.<br><br>The front end is also written in Visual BASIC.&nbsp;&nbsp;The listener on the server side is written in VB also.&nbsp;&nbsp;However, also on the server side there is a C++ engine that processes all the XML requests and throws them against an Oracle database and soon to be SQL Server 7.0.&nbsp;&nbsp;The server responds with an XML format that gets sent back to the client.&nbsp;&nbsp;Once back inside the object on the client side, the XML is parsed out and put into the properties of the object(s) and then possibly added to a collection.<br><br>It's very fast and efficient and makes for great reusability.&nbsp;&nbsp;The business logic resides mostly on the server side, however this is some client side logic for enabling and disabling of buttons based on what the user enters, etc.<br><br>This concept proved itself out one evening when the department lead was out of town on a demo using the customers data.&nbsp;&nbsp;One part of the application wouldn't come up.&nbsp;&nbsp;I asked for the IP address of the machine and he gave it to me.&nbsp;&nbsp;I pulled up the project on my desktop and hooked the server from our main office over the internet.&nbsp;&nbsp;While in the IDE, I saw the error that was coming back as was able to make the correction right there within a few minutes and send him off an EXE.<br><br>Since we get almost 100% reusability out of our objects, it enables us to build 3rd party interfaces to our products much faster and at a reduced cost.&nbsp;&nbsp;Maintenance is a breeze too.&nbsp;&nbsp;One thing I do want to mention, although it probably doesn’t belong here is that this was all done using a pretty good set of requirements and some good online documentation.&nbsp;&nbsp;The project implemented change control, configuration management and daily build and smoke tests to name a few.&nbsp;&nbsp;Several other techniques were used according to Steve McConnell’s' book, &quot;Rapid Development&quot; and &quot;The Software Project Survival Guide&quot;.<br><br>The project was on a tight schedule, but without many of the tools and techniques in place, the project would have been a disaster.&nbsp;&nbsp;We were implementing new technology in all three layers of the model and learning as we went.&nbsp;&nbsp;So you might say this is the project that beat all the odds in this field and became a shining success for us.<br> <p>Steve Meier<br><a href=mailto:tribesaddict@swbell.net>tribesaddict@swbell.net</a><br><a href= > </a><br>
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top