{"id":23089639,"url":"https://github.com/vanhakobyan/oop_in_armenian","last_synced_at":"2026-01-18T02:51:35.296Z","repository":{"id":82819230,"uuid":"107096405","full_name":"VanHakobyan/OOP_in_armenian","owner":"VanHakobyan","description":"Օբեկտակողմնորշված Ծրագրավորում (OOP) :","archived":false,"fork":false,"pushed_at":"2017-11-09T19:26:57.000Z","size":74,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-09T06:13:46.493Z","etag":null,"topics":["class","instance","object","reusable"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VanHakobyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-16T07:59:33.000Z","updated_at":"2019-04-26T09:16:04.000Z","dependencies_parsed_at":"2023-04-03T13:07:07.132Z","dependency_job_id":null,"html_url":"https://github.com/VanHakobyan/OOP_in_armenian","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VanHakobyan%2FOOP_in_armenian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VanHakobyan%2FOOP_in_armenian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VanHakobyan%2FOOP_in_armenian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VanHakobyan%2FOOP_in_armenian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VanHakobyan","download_url":"https://codeload.github.com/VanHakobyan/OOP_in_armenian/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247044599,"owners_count":20874340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["class","instance","object","reusable"],"created_at":"2024-12-16T20:38:56.957Z","updated_at":"2026-01-18T02:51:35.228Z","avatar_url":"https://github.com/VanHakobyan.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## Օբեկտակողմնորշված Ծրագրավորում **(OOP)** : Պարզ բարդի մասին, առանց ծրագրավորման :\n\n\u003chr\u003e\n\n  \u003cp align=\"center\"\u003e\u003cimg src=\"http://4.bp.blogspot.com/-ANYNUQrNZug/T4FMIgqFMlI/AAAAAAAAACo/al-4GKDFawM/s1600/oop%5B1%5D.jpg\"\u003e\u003c/p\u003e\n    \n  \u003cp\u003e\u003cbr\u003e\u0026emsp;Ցանկացած մարդ, ով սկսում է ուսումնասիրել որևէ ծրագրավորման լեզու, անկասկած հանդիպում է այնպիսի գաղափարների հետ, ինչպիսին է \u003cb\u003eOOP:\u003c/b\u003e\n\u003cb\u003eObject Oriented Programming\u003c/b\u003e - ի թեման անվերջ է: Կարելի է շատ խոսել այս թեմայով, բերել բազում օրինակներ տարբեր լեզուներով, բայց այդ բոլոր ներկայացումներն ունեն նույն սկզբնաղբյուրը, որը առաջացել է կենցաղային խնդիրների լուծումներ փնտրելու ճանապարհին:\n  \u003cbr\u003e\u0026emsp;Այս նյութում կարճ և հասկանալի լեզվով (ոչ ծրագրավորման) ներկայացնում եմ  OOP-ն և նրա սկզբունքները \u003cb\u003e(concept , парадигма)\u003c/b\u003e:\n  \u003cbr\u003e\u0026emsp;OOP-ն ներկայացնում է  2 հիմնական գաղափար՝ \u003cb\u003eClass\u003c/b\u003e և \u003cb\u003eObject\u003c/b\u003e:\n  \u003cbr\u003e\u0026emsp;Class-ը (դասը) աբստրակտ տվյալների տիպ է (abstract data type): Class - ի միջոցով սահմանվում են որոշակի էություններ (entities) (հատկանիշները և հնարավոր գործողությունները):Օրինակ՝ class-ը կարող է նկարագրել ուսանողին, ավտոմեքենային և այսպես շարունակ:\n  \u003cbr\u003e\u0026emsp;Object: Սահմանելով class-ը՝ կարող ենք սահմանել նրա որևէ օրինակ-օբյեկտ \u003cb\u003e(instace-object)\u003c/b\u003e: Object-ը արդեն Class-ի կոնկրետ  ներկայացումն է:\n \u003cbr\u003e\u0026emsp; Ըստ Պլատոնի՝ աշխարհը բաժանվում  էր 2 մասի՝ գաղափարների և իրերի:\nClass-ները կարող ենք դիտարկել որպես գաղափարներ, իսկ object-ները՝ իրեր : Օրինակ ՝ միրգը գաղափար է , իսկ խնձորը՝ կոնկրետ իր (չնայած խնձորը նույնպես կարող է դիտարկվել գաղափար):\n \u003cbr\u003e\u0026emsp;Ստացվում է, որ OOP-ի առաջին հիշատակումները արել է, ոչ ավել  ոչ պակաս, Պլատոնը:\u003c/p\u003e\n \n\n #### \u003ci\u003e \u0026emsp; OOP-ի սահմանում տալը անշնորհակալ գործ է, բայց այնուամենայնիվ, փորձենք ձևակերպել :\u003c/i\u003e\n\n### OOP Ձևակերպում 1:\n\n\u003cbr\u003e\u0026emsp;OOP-ի հիմանական խնդիրն է պռոեկցիա ստեղծել մատերիական իրականությունից կամ սուբյեկտային իրականությունից դեպի վիրտուալ իրականություն:\u003col\u003e \u003cli\u003eՄատերիական իրականություն - այն ինչ մենք տեսնում ու շոշափում ենք:\u003c/li\u003e\n   \u003cli\u003eՍյուբեկտային իրականություն  - այն ինչ մեր գլխում ու մտքերում է:\u003c/li\u003e\n  \u003cli\u003eՎիրտուալ իրականություն         - այն ինչ ստեղծում ենք ԷՀՄ-ներում (էլեկտրոնային հաշվիչ մեքենաներ):\u003c/li\u003e\u003c/ol\u003e\n\n\n\n\n### OOP Ձևակերպում 2:\n\n\u003cbr\u003e\u0026emsp;OOP-ն ծրագրավորման մեթոդոլոգիա է, որը հիմնված է այն գաղափարի վրա, որ ցանկացած օբեկտների համախումբ հանդիսանում է որևէ Class-ի Instance, իսկ Class-ները ձևավորվում են որպես ժառանգականության հիերարխիա:\n  \n\u003chr\u003e\n\n### OOP-ի ձևակերպումից հետո փորձենք տալ նրա սկզբունքների սահմանումները: Գոյություն ունի 4 հիմնական և ևս 2 ոչ հիմնական սկզբունքներ: \n\n\n\n1. \u003cb\u003eEncapsulation\u003c/b\u003e (Ինկապսուլյացիա)\n2. \u003cb\u003eInheritance\u003c/b\u003e (Ժառանգականություն)\n3. \u003cb\u003ePolymorphism\u003c/b\u003e (Պոլիմորֆիզմ)\n4. \u003cb\u003eAbstraction\u003c/b\u003e (Աբստրակցիա)\n5. \u003cb\u003eSending messages \u003c/b\u003e(Հաղորդագրությունների փոխանցում)\n6. \u003cb\u003eReusable \u003c/b\u003e(Բազմակի օգտագործում)\n\n\u003cbr\u003e\n    \n\u003cbr\u003e\u0026emsp;Առաջին 4-ը **OOP**-ի հիմնական դրույթներն են, ընդ որում, ճիշտ այն հերթականությամբ, ինչպես որ նշված է: Բանն այն է, որ այստեղ գումարելիների տեղերը փոխելուց գումարը փոխվում է: Օրինակ՝ եթե դուք պատմում եք Ձեր ընկերոջը որևէ այլ անձի մասին և սկսեք նրան բնորոշել, սկսելով նրա կոշիկի համարից, համաձայնեք, որ Ձեր ընկերոջն այնքան էլ հասկանալի չի լինի: Այնպես որ, OOP-ի դրույթները թվարկելիս պետք է սկսել և ավարտել նշված հերթականությամբ, քանզի մեկը մյուսից ինչ որ չափով կախված է:\n\u003cbr\u003e\u0026emsp;Անդրադառնանք հիմնականներին:\n\u003chr\u003e\n\n  ### 1.Encapsulation (Ինկապսուլյացիա)\n\n#### Ձևակերպում 1:\n\n\u0026emsp; Class-ի տվյալների «փակ» ռեալիզացիա:\n    \n\n#### Ձևակերպում 2:\n\n\u0026emsp;Class-ի վիճակի «թաքցնելու» մեխանիզմը արտաքին միջամտությունից կոչվում է ինկապսուլյացիա:\n\n#### Ձևակերպում 3:\n\n\u0026emsp;Նախատեսված է, որպեսզի թաքցվի ոչ պետքական կամ անհարկի ռեալիզացիայի դետալները **(implementation details)** user-օգտագործողից:\n\n#### Օրինակ՝  \n\u0026emsp;Դուք ուսանող եք և որևէ հարցով ուզում եք դիմել դեկանին: Դրա համար Ձեր դիմումը պետք է ներկայացնեք դեկանատ, այնուհետև համապատասխան աշխատակիցը Ձեր դիմումը ներկայացնում է դեկանին, և թե այնտեղ ինչ գործընթացներ են իրականանում (դեկանը մեդիում է կանչում կամ խորհրդակցում է իր օգնականի կամ սիրուհու հետ), դուք չեք իմանում: Ձեզ ներկայացնում են միայն Ձեր դիմումի պատասխանը: Դեկանի աշխատանքը ինկապսուլացվում է:\n\n \u003chr\u003e\n \n### 2.Inheritance (Ժառանգականություն)\n\n#### Ձևակերպում 1:\n\n\u003cp\u003e\u0026emsp;Ժառանգությունը այն մեխանիզմն է, որը թույլ է տալիս նոր class-ներ (տիպեր) կառուցել արդեն  գոյություն ունեցող class-երից (տիպերից)` ընդլայնելով եւ վերամշակելով իր հնարավորությունները (capabilities):\u003c/p\u003e \n\n#### Ձևակերպում 2:\n\n\u0026emsp;Ըստ էության ժառանգականությունը թույլ է տալիս ընդարձակել class-ի վարքագիծը՝ ժառանգելով բազային class-ի ֆունկցիոնալը: \n\n\n#### Օրինակ՝\n   \n \u0026emsp;Ունենք մարդ class-ը, որն իր մեջ նկարագրում է, թե մարդն ինչ տեսքի է և ինչ հիմնական գործառույթներ ունի: Կան մարդու տարբեր տեսակներ՝ ուսանող, ոստիկան, ֆուտբոլիստ և այլն : Բոլորն էլ մարդ class-ի բոլոր հատկություններով օժտված են, բայց ամեն մեկը յուրովի է: Ուսանողի հիմանական գործառույթը սովորելն է, ոստիկանինը՝  կարգ ու կանոն պահպանելը, ֆուտբոլիստինը դե երևի հասկանալի է : Այսպիսով, ուսանողը, ոստիկանը, ֆուտբոլիստը ժառանգվում են մարդ-class-ից:\n   \n   \u003chr\u003e\n\n\n### 3. Polymorphism (Պոլիմորֆիզմ)\n\n#### Ձևակերպում 1:\n\n\u0026emsp;Polymorphism (պոլիմորֆիզմ) հունական բառ է, որը նշանակում է բազմաթիվ ձևեր ընդունելու ունակություն: Պոլիմորֆիզմը թույլ է տալիս տարբեր ներքին կառուցվածք ունեցող օբյեկտներին ունենալ ընդհանուր արտաքին ինտերֆեյս: Պոլիմորֆիզմը հատկապես արդյունավետ է ժառանգականության իրականացման ժամանակ:\n\n#### Ձևակերպում 2:\n\n\u0026emsp;Պոլիմորֆիզմը նույն օբեկտը տարբեր միջավայրերում իրեն տարբեր կերպ դրսևորելու հատկությունն է:\n\n#### Օրինակ՝\n   \n\u0026emsp;Օրինակը վերցրեք հենց Ձեր վրա: Դուք ենթադրենք ուսանող եք: Դասի գնալիս դուք պետք է հագնեք համապատասխան հագուստ (դասի չեք կարող գնալ լողազգեստով) և Ձեզ պետք է դրսևորեք ըստ ԲՈՒՀ-ական կանոնադրության, իսկ ծովափ գնալիս  հենց պետք է լինել լողազգեստով, կամ եթե դուք գնում եք գործնական հանդիպման պետք է կրեք համապատասխան հագուստ և չեք կարող հագնել սպորտային հագուստ: Ին՞չ է ստացվում: Դուք նույն «օբեկտն» եք, բայց կախված միջավայրից ձեզ տարբեր կերպ եք դրսևորում: \n  \n\u003chr\u003e\n\n### 4.Abstraction (Աբստրակցիա)\n\n#### Ձևակերպում 1:\n\u0026emsp;Աբստրակցիան օբեկտին տալիս է հատկություններ՝ հստակ նշելով նրա տրամաբանական սահմնաննեը:\n\n#### Ձևակերպում 2:\n\n\u0026emsp;Abstraction-ը իրական աշխարհից որոշ օբյեկտներ վերցնելու հատկությունն է՝ այն վերափոխելով ծրագրավորման տերմինալոգիայով:\n\n\n\n#### Օրինակ՝\n\u0026emsp;Երբ ասում ենք ավտոմեքենա մենք կոնկրետ մեքենա չենք հասկանում այլ հասկանում ենք ընդհանուր գաղափարը: Այլ բան է երբ ասում ենք  \u003cb\u003eMitsubishi Pajero iO 1.8 4WD 1999թ. բալագույն\u003c/b\u003e, ապա հասկանում եմ, որ դա ընկերոջս ավտոմեքենան է, այսինքն կոնկրետ օբեկտ է ոչ թե գաղափար :  \n\n\u003chr\u003e\n\n#### You can follow me \n\n* \u003ca href=\"https://www.linkedin.com/in/vanikhakobyan/\"\u003eLinkedin\u003c/a\u003e\n* \u003ca href=\"https://github.com/vanhakobyan\"\u003eGitHub\u003c/a\u003e\n* \u003ca href=\"https://codefights.com/profile/vanhakobyan\"\u003eCodeFights\u003c/a\u003e\n* \u003ca href=\"https://www.sololearn.com/Profile/3163879\"\u003eSoloLearn\u003c/a\u003e\n* \u003ca href=\"https://gitlab.com/VanHakobyan\"\u003eGitlab\u003c/a\u003e\n* \u003ca href=\"https://codetrace.io/users/VanHakobyan\"\u003eCodeTrace\u003c/a\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvanhakobyan%2Foop_in_armenian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvanhakobyan%2Foop_in_armenian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvanhakobyan%2Foop_in_armenian/lists"}