{"id":34855,"date":"2019-10-31T22:00:51","date_gmt":"2019-10-31T19:00:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\/"},"modified":"2019-10-31T22:00:51","modified_gmt":"2019-10-31T19:00:51","slug":"10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","title":{"rendered":"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell\" src=\"\/wp-content\/uploads\/2019\/06\/129b610bc2576f8d753dfa72395f89f6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nGyakran tal\u00e1lkozom olyan fejleszt\u0151kkel, akik m\u00e9g nem hallottak a SOLID-elvekr\u0151l (itt <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/442928\/\">r\u00e9szletesen besz\u00e9lt\u00fcnk r\u00f3luk<\/a><\/noindex>. \u2014 A szerk.) vagy az objektum-orient\u00e1lt programoz\u00e1sr\u00f3l (OOP), esetleg hallottak r\u00f3la, de nem alkalmazz\u00e1k \u0151ket a gyakorlatban. Ez a cikk az OOP elveinek el\u0151nyeit t\u00e1rgyalja, amelyek seg\u00edtik a fejleszt\u0151ket mindennapi munk\u00e1jukban. N\u00e9h\u00e1ny elv j\u00f3l ismert, m\u00e1sok tal\u00e1n nem annyira, \u00edgy a cikk hasznos lesz mind a kezd\u0151k, mind a tapasztalt programoz\u00f3k sz\u00e1m\u00e1ra.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Eml\u00e9keztetj\u00fck:<\/b> <i>Minden \u00bbHabr\u00ab olvas\u00f3nak \u2014 10 000 forint kedvezm\u00e9ny b\u00e1rmely Skillbox tanfolyamra a \u00bbHabr\u00ab prom\u00f3ci\u00f3s k\u00f3ddal.<\/i><\/p>\n<p><b>A Skillbox aj\u00e1nlja:<\/b> Oktat\u00e1si online kurzus <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/java\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=JAVDEV&amp;utm_content=articles&amp;utm_term=10oop\">Java fejleszt\u0151<\/a><\/noindex>.<\/p><\/blockquote>\n<p><\/p>\n<h3>DRY (Don\u2019t Repeat Yourself)<\/h3>\n<p>\nEz egy el\u00e9g egyszer\u0171 elv, amelynek l\u00e9nyege vil\u00e1gos a nev\u00e9b\u0151l: \u201eNe ism\u00e9teld meg magad\u201d. A programoz\u00f3 sz\u00e1m\u00e1ra ez azt jelenti, hogy el kell ker\u00fclni a duplik\u00e1lt k\u00f3dot, valamint lehet\u0151s\u00e9get kell adni az absztrakci\u00f3 haszn\u00e1lat\u00e1ra a munk\u00e1ban.<\/p>\n<p>Ha a k\u00f3dban k\u00e9t ism\u00e9tl\u0151d\u0151 szakasz tal\u00e1lhat\u00f3, \u00e9rdemes \u00f6sszegy\u0171jteni \u0151ket egy met\u00f3dusba. Ha egy merev \u00e9rt\u00e9k t\u00f6bbsz\u00f6r is haszn\u00e1latra ker\u00fcl, akkor \u00e9rdemes k\u00f6zpublic v\u00e1ltoz\u00f3v\u00e1 alak\u00edtani.<\/p>\n<p>Ez sz\u00fcks\u00e9ges ahhoz, hogy egyszer\u0171s\u00edts\u00fck a k\u00f3dot \u00e9s k\u00f6nnyebb\u00e9 tegy\u00fck a karbantart\u00e1s\u00e1t, ami az OOP alapvet\u0151 c\u00e9lja. T\u00falz\u00e1sba sem \u00e9rdemes vinni az \u00f6sszegz\u00e9st, mivel a m\u00e1r ugyanaz a k\u00f3d nem fog m\u0171k\u00f6dni az OrderId-val \u00e9s az SSN-nel is.<\/p>\n<h3>A v\u00e1ltoz\u00e1sok inkapszul\u00e1l\u00e1sa<\/h3>\n<p>\nA legt\u00f6bb c\u00e9g szoftverterm\u00e9kei folyamatosan fejl\u0151dnek. Ez\u00e9rt a k\u00f3dban v\u00e1ltoztat\u00e1sokat kell eszk\u00f6z\u00f6lni, karbantartani kell azt. Az \u00e9lete egyszer\u0171s\u00edt\u00e9se \u00e9rdek\u00e9ben az inkapszul\u00e1ci\u00f3t haszn\u00e1lhatjuk. Ez lehet\u0151v\u00e9 teszi a megl\u00e9v\u0151 k\u00f3dalap hat\u00e9konyabb tesztel\u00e9s\u00e9t \u00e9s karbantart\u00e1s\u00e1t. <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.com\/2011\/12\/factory-design-pattern-java-example.html\">\u00cdme egy p\u00e9lda<\/a><\/noindex>.<\/p>\n<p>Ha Java-ban programozol, akkor <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.sg\/2012\/03\/private-in-java-why-should-you-always.html#axzz559dyoLSA\">alap\u00e9rtelmez\u00e9s szerint a private met\u00f3dusokat \u00e9s v\u00e1ltoz\u00f3kat \u00e1ll\u00edtsd be<\/a><\/noindex>.<\/p>\n<h3>Nyitotts\u00e1g\/z\u00e1rotts\u00e1g elve<\/h3>\n<p>\nEzt az elvet k\u00f6nnyen megjegyezhetj\u00fck, ha elolvassuk a k\u00f6vetkez\u0151 kijelent\u00e9st: \u201eA programoz\u00e1si entit\u00e1sok (oszt\u00e1lyok, modulok, f\u00fcggv\u00e9nyek stb.) nyitottak kell, hogy legyenek a b\u0151v\u00edt\u00e9sre, de z\u00e1rtak a m\u00f3dos\u00edt\u00e1sra\u201d. A gyakorlatban ez azt jelenti, hogy lehet\u0151v\u00e9 kell tenni\u00fck a viselked\u00e9s\u00fck megv\u00e1ltoztat\u00e1s\u00e1t a forr\u00e1sk\u00f3d megv\u00e1ltoztat\u00e1sa n\u00e9lk\u00fcl.<\/p>\n<p>Ez az elv fontos, amikor a forr\u00e1sk\u00f3d m\u00f3dos\u00edt\u00e1sai \u00e1tfog\u00f3 fel\u00fclvizsg\u00e1latot, modul\u00e1ris tesztel\u00e9st \u00e9s egy\u00e9b elj\u00e1r\u00e1sokat ig\u00e9nyelnek. Az a k\u00f3d, amely az nyitotts\u00e1g\/z\u00e1rotts\u00e1g elv\u00e9nek megfelel\u0151en m\u0171k\u00f6dik, nem v\u00e1ltozik meg b\u0151v\u00edt\u00e9skor, \u00edgy ezzel l\u00e9nyegesen kevesebb probl\u00e9ma mer\u00fcl fel.<\/p>\n<p>\u00cdme egy k\u00f3d p\u00e9lda, amely megs\u00e9rti ezt az elvet.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell\" src=\"\/wp-content\/uploads\/2019\/06\/85d53972bef28713087acc428deebc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nHa sz\u00fcks\u00e9ges b\u00e1rmilyen m\u00f3dos\u00edt\u00e1st v\u00e9gezni, az sok id\u0151t vehet ig\u00e9nybe, mivel az \u00f6sszes olyan k\u00f3dr\u00e9szletet m\u00f3dos\u00edtani kell, amely kapcsolatban \u00e1ll a sz\u00fcks\u00e9ges r\u00e9sszel.<\/p>\n<p>Egy\u00e9bk\u00e9nt a nyitotts\u00e1g-z\u00e1rts\u00e1g a SOLID alapelvek egyike.<\/p>\n<h3>Egys\u00e9ges felel\u0151ss\u00e9g elve (SRP)<\/h3>\n<p>\nEz egy m\u00e1sik elv a SOLID csoportb\u00f3l. Azt mondja, hogy \"csak egyetlen ok van, ami miatt egy oszt\u00e1lyt m\u00f3dos\u00edtani kell\". Az oszt\u00e1ly kiz\u00e1r\u00f3lag egy feladat megold\u00e1s\u00e1ra vonatkozik. T\u00f6bb met\u00f3dusa lehet, de ezek k\u00f6z\u00fcl mindegyik csak a k\u00f6z\u00f6s feladat megold\u00e1s\u00e1ra szolg\u00e1l. Minden met\u00f3dusnak \u00e9s tulajdons\u00e1gnak csak ezt kell szolg\u00e1lnia. <\/p>\n<p><img decoding=\"async\" alt=\"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell\" src=\"\/wp-content\/uploads\/2019\/06\/7332d424f27e091192cbbb8dacb13d01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nEnnek az elvnek az \u00e9rt\u00e9ke abban rejlik, hogy gyeng\u00edti a kapcsolatot a szoftver egyes komponensei \u00e9s a k\u00f3d k\u00f6z\u00f6tt. Ha egy oszt\u00e1lyba t\u00f6bb mint egy funkci\u00f3t adunk, az a k\u00e9t funkci\u00f3 k\u00f6z\u00f6tti kapcsolat kialakul\u00e1s\u00e1t jelenti. \u00cdgy ha az egyik megv\u00e1ltozik, nagy a val\u00f3sz\u00edn\u0171s\u00e9ge, hogy a m\u00e1sik, az els\u0151h\u00f6z kapcsol\u00f3d\u00f3 is megs\u00e9r\u00fcl. Ez pedig a tesztel\u00e9si ciklusok n\u00f6veked\u00e9s\u00e9t jelenti, hogy el\u0151re \u00e9szlelj\u00fck az \u00f6sszes probl\u00e9m\u00e1t.<\/p>\n<h3>F\u00fcgg\u0151s\u00e9gek inverzi\u00f3ja elve (DIP)<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell\" src=\"\/wp-content\/uploads\/2019\/06\/eb1e09cceee028f88fa83fd8d30a189a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nFent egy k\u00f3dp\u00e9ld\u00e1t l\u00e1tunk, ahol az AppManager az EventLogWriter-t\u0151l f\u00fcgg, amely szorosan kapcsol\u00f3dik az AppManagerhez. Ha m\u00e1s m\u00f3don kell \u00e9rtes\u00edt\u00e9st k\u00fcldeni, legyen az push, SMS vagy e-mail, meg kell v\u00e1ltoztatni az AppManager oszt\u00e1lyt.<\/p>\n<p>A probl\u00e9m\u00e1t DIP seg\u00edts\u00e9g\u00e9vel lehet megoldani. \u00cdgy az AppManager helyett k\u00e9rj\u00fck az EventLogWriter-t, amely a keretrendszeren kereszt\u00fcl ker\u00fcl bevezet\u00e9sre.<\/p>\n<p>A DIP lehet\u0151v\u00e9 teszi egyes modulok hibamentes helyettes\u00edt\u00e9s\u00e9t m\u00e1sokkal, megv\u00e1ltoztatva a f\u00fcgg\u0151s\u00e9gi modult. Ez lehet\u0151v\u00e9 teszi egy modul m\u00f3dos\u00edt\u00e1s\u00e1t an\u00e9lk\u00fcl, hogy az m\u00e1sokra hat\u00e1ssal lenne.<\/p>\n<h3>Kompoz\u00edci\u00f3 \u00f6r\u00f6kl\u0151d\u00e9s helyett<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell\" src=\"\/wp-content\/uploads\/2019\/06\/b97ebf8c423f415298dc10ae4e14fe89.jpg\" style=\"display:block;margin: 0 auto;\" \/>A k\u00f3d \u00fajrahaszn\u00e1lat\u00e1nak k\u00e9t alapvet\u0151 m\u00f3dja van - az \u00f6r\u00f6kl\u00e9s \u00e9s a kompoz\u00edci\u00f3, mindkett\u0151nek vannak el\u0151nyei \u00e9s h\u00e1tr\u00e1nyai. \u00c1ltal\u00e1ban a m\u00e1sodikat r\u00e9szes\u00edtik el\u0151nyben, mivel rugalmasabb.<\/p>\n<p>A kompoz\u00edci\u00f3 lehet\u0151v\u00e9 teszi az oszt\u00e1ly viselked\u00e9s\u00e9nek megv\u00e1ltoztat\u00e1s\u00e1t fut\u00e1sid\u0151ben a tulajdons\u00e1gainak be\u00e1ll\u00edt\u00e1s\u00e1val. Az interf\u00e9szek implement\u00e1l\u00e1sakor a polimorfizmust haszn\u00e1ljuk, amely rugalmasabb implement\u00e1ci\u00f3t ad.<\/p>\n<p>M\u00e9g Joshua Bloch \"Effective Java\" c\u00edm\u0171 k\u00f6nyv\u00e9ben is a kompoz\u00edci\u00f3t javasolja az \u00f6r\u00f6kl\u00e9ssel szemben.<\/p>\n<h3>Barbara Liskov helyettes\u00edt\u00e9si elve (LSP)<\/h3>\n<p>\nA SOLID principle. It states that subtypes should be substitutable for their base types. This means that methods and functions that work with the superclass should also work seamlessly with its subclasses.<\/p>\n<p>LSP is related to both the single responsibility principle and the interface segregation principle. If a class offers more functionality than its subclass, the latter will not support some of the functions, violating this principle.<\/p>\n<p>Here is a piece of code that contradicts LSP.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell\" src=\"\/wp-content\/uploads\/2019\/06\/8c412a2cb4d1f7e53f69afc4ef46a967.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nThe method area(Rectangle r) calculates the area of a Rectangle. The program will crash when executed with Square, as Square is not a Rectangle in this context. According to LSP, functions that use references to base classes should be able to use derived class objects without additional instructions.<\/p>\n<p>This principle, which is a specific definition of subtype, was proposed by Barbara Liskov in 1987 at a conference in her keynote address titled 'Data Abstraction and Hierarchy' \u2014 hence its name.<\/p>\n<h3>Interface Segregation Principle (ISP)<\/h3>\n<p>\nAnother SOLID principle. It states that an interface that isn't used should not be implemented. Adhering to this principle helps keep the system flexible and suitable for refactoring when changes in logic are needed.<\/p>\n<p>This situation most often arises when an interface contains several functionalities, while the client only needs one of them.<\/p>\n<p>Since writing an interface is a complex task, modifying it after completion without breaking anything will be challenging.<\/p>\n<p>The advantage of the ISP in Java is that all methods must be implemented before they can be used by the classes. Therefore, this principle allows for a reduction in the number of methods.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell\" src=\"\/wp-content\/uploads\/2019\/06\/ea3e314e9f7766e8c1d3ce46d0dcdc09.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Programming for the interface, not the implementation<\/h3>\n<p>\nThis is clear from the title. Applying this principle leads to the creation of flexible code that can work with any new implementation of the interface.<\/p>\n<p>You should use the interface type for variables, return types, or method argument types. For example \u2014 use SuperClass instead of SubClass.<\/p>\n<p>That is:<\/p>\n<p><i>List numbers = getNumbers();<\/i><\/p>\n<p>Not:<\/p>\n<p><i>ArrayList numbers = getNumbers();<\/i><\/p>\n<p>Here is a practical implementation of what is described above.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell\" src=\"\/wp-content\/uploads\/2019\/06\/8bbcd8342a9870bc28272f0550a8664c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>A deleg\u00e1l\u00e1s elve<\/h3>\n<p>\nEgy gyakori p\u00e9lda az equals() \u00e9s hashCode() m\u00f3dszerek a Java-ban. Amikor k\u00e9t objektumot kell \u00f6sszehasonl\u00edtani, ez a m\u0171velet a megfelel\u0151 oszt\u00e1lynak deleg\u00e1l\u00f3dik a kliens helyett.<\/p>\n<p>A elv el\u0151nye a k\u00f3d ism\u00e9tl\u0151d\u00e9s\u00e9nek hi\u00e1nya \u00e9s a viselked\u00e9s viszonylag egyszer\u0171 m\u00f3dos\u00edthat\u00f3s\u00e1ga. Emellett alkalmazhat\u00f3 esem\u00e9nyek deleg\u00e1l\u00e1s\u00e1ra is.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek tudnia kell\" src=\"\/wp-content\/uploads\/2019\/06\/c9ca40cb27e288e5e31ebfba76fa36a5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nMindezek az elvek lehet\u0151v\u00e9 teszik rugalmasabb, szebb \u00e9s megb\u00edzhat\u00f3bb k\u00f3d \u00edr\u00e1s\u00e1t, magas \u00f6sszetartoz\u00e1ssal \u00e9s alacsony k\u00f6t\u0151d\u00e9ssel. Nyilv\u00e1nval\u00f3, hogy a te\u00f3ria hasznos, de ahhoz, hogy a fejleszt\u0151 t\u00e9nyleg alkalmazni tudja a megszerzett tud\u00e1st, gyakorl\u00e1sra van sz\u00fcks\u00e9g. A k\u00f6vetkez\u0151 l\u00e9p\u00e9s az OOP alapelveinek elsaj\u00e1t\u00edt\u00e1sa ut\u00e1n lehet a tervez\u00e9si mint\u00e1k tanulm\u00e1nyoz\u00e1sa, amelyek \u00e1ltal\u00e1nos szoftverfejleszt\u00e9si probl\u00e9m\u00e1k megold\u00e1s\u00e1ra szolg\u00e1lnak.<\/p>\n<blockquote><p><b>A Skillbox aj\u00e1nlja:<\/b><\/p>\n<ul>\n<li>Gyakorlati kurzus <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/agima\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=AGIMA&amp;utm_content=articles&amp;utm_term=10oop\">\u00abMobilfejleszt\u0151 PRO\u00bb<\/a><\/noindex>.<\/li>\n<li>Alkalmazott online kurzus <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/python-data\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=PTNANA&amp;utm_content=articles&amp;utm_term=10oop\">\u201eAdatanalitikus Pythonon\u201d<\/a><\/noindex>.<\/li>\n<li>K\u00e9t\u00e9ves gyakorlati tanfolyam <noindex><a rel=\"nofollow\" href=\"https:\/\/iamwebdev.skillbox.ru\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=WEBDEVPRO&amp;utm_content=articles&amp;utm_term=10oop\">\u201eWebfejleszt\u0151 PRO\u201d<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/454314\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043d\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 SOLID (\u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043e \u043d\u0438\u0445 \u0437\u0434\u0435\u0441\u044c. \u2014 \u041f\u0435\u0440.) \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u041e\u041e\u041f), \u0438\u043b\u0438 \u0441\u043b\u044b\u0448\u0430\u043b\u0438, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u0445 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u041e\u041e\u041f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0432 \u0435\u0433\u043e \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u043c \u0442\u0440\u0443\u0434\u0435. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b, \u0434\u0440\u0443\u0433\u0438\u0435 \u2014 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c, \u0442\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26244,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34855","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd4710 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:00:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd4710 objektum-orient\u00e1lt programoz\u00e1si elv, amelyet minden fejleszt\u0151nek ismernie kell | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd4710 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a | ProHoster","og:url":"https:\/\/prohoster.info\/hu\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:00:51+00:00","article:modified_time":"2019-10-31T19:00:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34855","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:51:32","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:14:05","updated":"2026-01-21 20:51:32","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/34855","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=34855"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/34855\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/26244"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=34855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=34855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=34855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}