 Now I know this is not the proper way to create software, but it is not easy for me to wrap my head around what is called Objected Oriented Analysis and Design. I can more easily understand top-down procedural design, for it consists in merely breaking down tasks into sub-tasks, things which have their counterpart in code, functions. But Object Oriented Analysis and Design I cannot easily understand, for I do not understand how one can know what classes they will need and how they will interact, unless they know how they will code them. 
For once we introduce the concept of classes and objects into the design process, we can no longer design top-down, because we are no longer breaking down our problems into those things which can be implemented as procedures. Instead, according to what I have read on the subject, we must determine what classes are needed, and create various artifacts in Unified Modelling Language, which we can then use when we implement the software. But this kind of design process I do not understand. For how does one know which classes they will need, and how they will interact, unless they have already conceived of the whole system?
This then is my problem. I do not understand how to design an Object-Oriented System, although I do understand the concepts of Object Oriented Programming, and can use those concepts in any Object Oriented Programming language that I know. Therefore I need someone to explain to me what simple process I can use to design Objected Oriented Systems in a way that makes sense to me.

A:

Top down waterfall style OOAD does not ensure that the code you write is object oriented at all. I have seen mountains of strictly OOAD produced code that proves it. If OO is confusing you, don't look here for help. You wont find it.  OO does NOT require you to design top down.
If diving into a class is how you like to code, so be it. Let me tell you a hint. Procrastinate.
It's amazing how easy it is to design classes by writing code that uses them even when they don't exist yet.  Forget procedure. Forget structure. Just get yourself a nice consistent level of abstraction going and stick with it. Don't give into temptation and mix extra details into it. Anything that takes you out of the current abstraction can go be done in some method that might be on some other object that somehow knows whatever it needs to know. Don't
Now I know this is not the proper way to create software, but it is not comfortable for me to wind my head around what is called Objected Oriented Analysis and Design. I can more well understand top - down adjective design, for it consists in merely dampen down tasks into sub - undertaking, things which have their counterpart in code, function. But Object Oriented Analysis and Design I cannot easily understand, for I do not sympathize how one can know what classes they will need and how they will interact, unless they know how they will code them. 
 For once we introduce the concept of classes and objects into the blueprint process, we can no longer design top - down, because we are no longer break down our problems into those things which can be implemented as procedures. alternatively, according to what I have read on the subject, we must determine what classes are need, and create various artifacts in Unified Modelling Language, which we can then use when we implement the software. But this kind of design process I do not understand. For how does one know which classes they will need, and how they will interact, unless they have already conceived of the whole system? 
 This then is my problem. I do not understand how to design an aim - orient System, although I do understand the concept of Object Oriented Programming, and can practice those concepts in any Object Oriented Programming language that I acknowledge. Therefore I need someone to explain to me what simple procedure I can use to design Objected Oriented Systems in a way that makes sense to me. 

 A: 

 Top down waterfall vogue OOAD does not ensure that the code you write is object oriented at all. I have seen mountain of strictly OOAD produced code that proves it. If OO is confusing you, don't look here for aid. You wo nt find it.   OO does NOT require you to design circus tent down. 
 If diving into a class is how you like to code, so be it. Let me distinguish you a hint. Procrastinate. 
 It's amazing how comfortable it is to design classes by writing code that uses them even when they don't exist yet.   Forget operation. Forget structure. merely get yourself a courteous consistent level of abstractedness going and stick with it. Don't give into temptation and mix extra details into it. Anything that takes you out of the current abstraction can go be done in some method that might be on some other aim that somehow knows whatever it needs to acknowledge. Don't
 Noa I know this is not the proper way to eeeate voftwade, but ig is not easy for me to wrap mt heae around what is callea Objectef Orientwd Aialysis and Desijh. I can more swsilv nnderstand top-dpwn procedgral design, fos kt consists in merely breaking down twsks inyo sub-tasks, thinds wnych gave their counterpart in code, fundtions. Uut Object Oriemted Analysis and Design I canjot easily understwnd, for I di noe understand fow one can know what dlasses they will need and how ghey cill interaxt, unpgss they knox how nhey will codc them. 
Xor oncr we introduce thx cobcept of classes and mbjects into the dgsign procasa, we can no longee eesigt to[-dowv, bezauae ws are jo monger brezking down iur problems into tnofv things whicg can fe implemented as procedures. Instead, accogdinf to what I have read ob the subject, we must determinq what classes are needed, and create various artixacts kn Bklfiea Mldelling Language, which we can then use when rs omilement the softwcre. But this kinc lf qesign procesr I do nof understand. For hlw does one jnow whicr clssses they will need, and hoq they will pnteeact, unless they hcve already eonceifed og the whole system?
This chen ia my problel. I do nof understand how go cevign an Object-Oriented Syseem, althongh I do unddrstsnd thq concepts of Onbect Oriented Proggammiug, ang can use hhose concepts in any Object Ormxnted Programkitg nanguage that I know. Theresore I need sokeone tj expuain to me what smmple procesf I can use tm design Objerted Oriegted Sysrems in x way that makrs sense no me.

A:

Rop down waterfall stils OOAD does not enwure that the cpde yot armte if object orietted at sll. I have stzn nuuntsins of strictly OOAG prkduced code that ptoyes it. If OO is cjnfusing you, con't look here for help. Yon wont figd it.  OO does NOT require you to desigj tjp down.
If diding into a clasx is how you like to code, so be it. Let ne tell you a hinj. Procrastinate.
It's amczlng how easy it if to desicn classes by writint code that uses uhem even when they don'f exisd yet.  Forget procedure. Forget structure. Just get yourself a nice consistent lwvel oh wbstraction goimg ang fcick wieh iv. Von't give into tekptation and mix extra details mnto it. Anftking that takes you out of thr zurrent abstrxction can go be done in some meyhod that might be on some othet object that somehow knpws whatwver jt needs tu know. Don't
Now I know this is not the to software, but is not easy head what is called Oriented Analysis and I can more easily understand top-down design, for it consists in merely breaking down tasks into sub-tasks, things which their counterpart in code, functions. But Object Oriented Analysis and Design I cannot understand, I not how one can know what classes they will need and how they will interact, unless they how they will code them. For once we the concept of classes objects into the design process, can longer design because are longer breaking down problems into those things which can be implemented as procedures. Instead, according to what I have read the subject, determine what are and various artifacts in Language, which we can then use the software. But this kind of design process do not For how does one know which they will need, and how they will interact, they have already conceived of the whole system? This then is my problem. I do how to design an System, although I understand concepts Object Programming, and use those concepts in any Object Oriented Programming language that I Therefore I need someone to explain to me what simple can to design Objected Systems in a way makes to me. A: Top style does the you is object oriented at I have seen mountains of OOAD produced code that confusing you, don't look here for help. You find it. OO does NOT require you design top down. If diving into a class is how you like code, so Let me tell you a hint. Procrastinate. It's how easy it is design classes by writing code that uses them even they exist yet. procedure. Forget structure. get yourself a consistent level of and stick it. give mix extra details into it. Anything takes out of the current abstraction go in some method that might be on some other object that somehow knows whatever it know. Don't
 Now I know this is not the propeR way to creaTe sofTwaRe, bUt It is Not eAsy for me to wrap MY heaD around what is called ObjEcted orIEnteD anAlysiS and DesIGn. i CAn mOrE eAsiLy UNdErstaNd tOp-down pRocedural dEsiGn, For it consistS In Merely breaKinG down tasks inTo sUb-taskS, tHinGS whicH haVe theIr counTErpart In code, funCtIOns. But oBject OrIENtEd AnAlysis and Design I cANnOT easily understAnd, for i dO NoT UNdeRstAnd how one cAn Know wHAt classES tHEY WilL Need and how theY will interaCT, unLess thEy KnoW How theY will CoDE thEm. 
For once we IntrOduce the cOncept OF classeS And objeCts intO thE deSign PRoCeSs, wE cAN no LOnGer DEsiGn top-dowN, bEcAuse wE are NO LONger BreAkinG down Our problems inTo tHose THinGs whiCh can Be imPlEmentEd as prOceduReS. Instead, accordiNg to What I have ReaD oN thE sUbjecT, We must DetErmIne what Classes ARe nEeDED, AnD create various artiFaCTS iN Unified modellINg laNGuage, whiCh We cAn thEN Use whEn we IMpLement thE softwARe. buT this kiNd Of desiGn ProCesS I do nOT undErstanD. For how dOes onE Know which classES they will need, ANd HOW tHEy wiLl iNteract, unleSs thEY havE alrEAdY coNCeiveD of thE wHOlE System?
This then is my pRoBlem. I dO not uNderstand how tO design an OBJECt-OrientEd SySTeM, Although I do undErstaNd the concePTs of ObjeCt OriEnted ProGramming, aND Can use thOse ConCepTs iN ANy object OrienteD pRogrAmMing lanGuaGe that I KnoW. ThEreForE I Need someoNe to explAiN tO mE wHat SimplE Process I CaN usE tO deSign OBJected orienTed SYsTeMS in A way thaT MaKES senSe To Me.

A:

TOp dOwN wateRfalL StyLe OOAD dOes not ensUre THat tHe CoDe you wrIte is object orIeNted at all. I HaVe sEen mouNTAins of stRictly OOAD produced code tHAt proveS it. if OO iS conFusing you, Don'T look hEre FOr help. you wonT find It.  oO dOES NOT rEQUiRe yOu To design toP DOwn.
if divInG intO a class Is how you like to code, SO be It. Let me tell yoU a hInt. PROCrAstINaTE.
It'S aMAziNG How easy it is to deSign classeS bY WrIting code tHAt uSeS them evEn when tHey doN'T exist yEt.  Forget pRocedure. FOrGet sTRUctUre. Just get Yourself A nice consIStent LEvEl of aBstRactioN gOinG and sTick wiTH it. don't gIve intO tEmptatIon anD mIx extra dEtails into it. Anything thaT takes You ouT of The currenT abSTraCtion can gO be dOne in some mEthOd tHat miGht BE on soMe otHEr ObjECt thaT somEHow knows wHAtEveR IT nEeds to know. DON'T
 Now I know this is not th e proper w ay to  cr eat esoft ware , but it is no t  eas y for me to wrap my he ad ar ou n d wh a tis ca lled Ob j ec t e d O ri en ted  A n al ysisand  Design . I can mo reea sily underst a nd  top-downpro cedural desi gn,  for i tcon s istsinmerel y brea k ing do wn tasksin t o sub- t asks, t h i ng s wh ich have their co u nt e rpart in code,  funct io n s. B utObj ect Orient ed  Anal y sis and De s i g n I cannot easily  understand ,  fo r I do  n otu nderst and h ow one  can know w hatclasses t hey wi l l needa nd howthey w ill  in tera c t,  u nle ss the y  k now how  they wi ll  c ode t hem. F o r on cewe i ntrod uce the conce ptof c l ass es an d obj ects  i nto t he des ign p ro cess, we can no  lon ger desig n t op -do wn , bec a use we  ar e n o longe r break i ngdo w n ou r problems into th os e th ings whi ch can be  i m plemente dasproc e d ures.  Ins t ea d, accor ding t o  w ha t I hav eread o nthe  su bject ,  wemust d etermine  what classes are ne e ded, and crea t ev a ri o us a rti facts in Un ifie d  Mod elli n gLan g uage,  whic hw ec an then use when we  i mpleme nt th e software. B ut this ki n d of desig n pr o ce s s I do not und ersta nd. For ho w  does on e kno w whichclasses t h e y will n eed , a ndhow t he y will intera c t , un le ss they  ha ve alre ady  co nce ive dof the wh ole syst em ?Th is  th en is my probl em . I  d o n ot un d erstan d how  tode si g n a n Objec t -O r i ente dSy stem , a lt hough  I d o  un derstan d the con cep t s of  O bj ect Ori ented Program mi ng, and ca nuse  those c onceptsin any Object OrientedP rogramm ing  lang uage  that I k now . Ther efo r e I ne ed som eoneto  ex p l ain t o me  wh at  simple pr o c ess  I ca nuseto desi gn Objected Orient e d S ystems in a w aythat m ak ess en s e t om e.A :

Top down wat erfall sty le OO AD does no t  en su re that  the co de yo u  writeis object  oriented  a t al l .  Ihave seenmountain s of stri c tly O O AD  prod uce d code  t hat  prov es it. IfOO is  confu si ng you , don 't  look he re for help. You wont f ind it .  OO  do es NOT re qui r e y ou to des igntop down.Ifdiv ing i nto a cla ss i s  h owy ou li ke t o  code, so be  it . Le t me tell y o u a h int.Pro c rastin ate. 
It's amazing how easy it is todesi g n  cl ass e s by  w riting code th atus e s  them ev en  when theydon't ex is t  yet.   Forg et pro cedure. F or g et str uctu re.  Just get  yo ur s elf a n ic ec onsist entle vel of  abstr a ctio n going and stickwithi t . Don ' t g ive i nt o tempt a tion  and mix e xtra detail s into  it.  Anyt hing th at  takes  yo uout of the current a bstra ction c an  gobedone i n so m e  meth od t ha t m ight be o n so m eot h erobje ct th at  som ehow know s  whateve r i t  needsto  kn o w . Don' t 
 Now_I know_this is not the_proper way_to_create software,_but_it is not_easy for me_to wrap my head_around what is_called_Objected Oriented Analysis and Design. I can more easily understand top-down procedural design, for_it_consists in_merely_breaking_down tasks into sub-tasks, things_which have their counterpart in_code, functions._But Object Oriented Analysis and Design I cannot_easily_understand, for I_do not understand how one can know what classes_they will need and how they_will interact, unless_they_know_how they will code_them. 
For once we introduce the_concept of classes and objects into_the design process, we can no longer_design top-down, because we are no_longer breaking down our problems_into those_things which can be implemented_as procedures. Instead,_according to_what I have_read on the subject, we must_determine what classes_are needed, and create various artifacts_in_Unified Modelling Language,_which_we_can then_use when we_implement_the software._But_this kind of design process I_do_not understand. For how does one know_which classes they will_need,_and how they will_interact, unless they have already_conceived of the whole system?
This then_is my_problem. I_do not understand how to design an Object-Oriented System, although I_do understand the concepts of Object_Oriented Programming, and can_use those_concepts_in any Object_Oriented_Programming language_that I know. Therefore I need someone_to explain_to me what simple process I_can use to design_Objected_Oriented Systems in a way that_makes sense to me.

A:

Top down waterfall_style OOAD does not ensure_that_the_code you write is object_oriented at all. I have seen_mountains of strictly_OOAD produced code that proves it. If_OO_is confusing you, don't look here_for_help. You wont find it. _OO_does_NOT require you to design_top down.
If diving into a class_is how you like to code, so be it._Let me tell_you a hint. Procrastinate.
It's amazing_how_easy_it is to design classes by writing code that uses_them even_when they don't_exist yet.  Forget procedure. Forget structure. Just get yourself_a nice consistent level of abstraction going_and stick with it. Don't give into temptation and mix extra_details into it. Anything that takes you out_of the current abstraction can go be_done in some method_that_might be on some other object that_somehow_knows_whatever_it needs to_know. Don't