Objektorientētā programmēšana

Objektorientētā programmēšana (OOP) ir datorprogrammu rakstīšanas veids, kurā datu un metožu attēlošanai tiek izmantota "objektu" ideja. Parasti datorprogrammas bija tikai instrukciju saraksts datoram, kas datoram uzdod veikt noteiktas darbības noteiktā veidā, ko sauc par procedurālo programmēšanu. Tomēr objektorientētajā programmēšanā datorprogrammās tiek izmantoti objekti, kas savā starpā sarunājas un maina datus šajos objektos, lai tie darbotos tā, kā vēlas lietotājs. Turklāt objektorientētā programmēšana palīdz izstrādātājam, jo ļauj kodu viegli atkārtoti izmantot citās programmas daļās vai pat citos cilvēkos.

Lielākā daļa programmēšanas valodu ir dažādu datorprogrammu rakstīšanas veidu apvienojums. Piemēram, Python ļauj datorprogrammas rakstīt gan objektorientētas programmēšanas, gan procedurālās programmēšanas veidā. Ir daudzas programmēšanas valodas, kas ļauj rakstīt datorprogrammas OOP, Dažas no šīm programmēšanas valodām ir, piemēram: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python u. c.

Funkcijas

Objektorientētās programmēšanas galvenā ideja ir tāda, ka viss ir objekts. Tomēr objektiem var būt dažādi tipi:

  • Mainīgie var saturēt dažādu tipu informāciju (vai datus), ko atbalsta programmēšanas valoda. Piemēram, veselu skaitļu datu tips un sarakstu datu struktūra. Mainīgie ir ideja, kas jau ir pieejama procedurālajās programmēšanas valodās. Objektorientētajā programmēšanā mainīgos lielākoties sauc par atribūtiem.
  • Procedūras (pazīstamas arī kā funkcijas, metodes vai rutīnas) ir instrukciju saraksts, kas datoram uzdod pieņemt ievaddatus, veikt aprēķinus vai mainīt datus un atdot rezultātus lietotājam. Procedūras ir arī ideja, kas jau ir pieejama procedurālajās programmēšanas valodās. Objektorientētajā programmēšanā procedūras galvenokārt sauc par metodēm.
  • Klases ir dažādu mainīgo un procedūru kopums. Klases parasti sarunājas cita ar citu, lai veiktu izmaiņas datos un darbotos tā, kā lietotājs vēlas.

Objekti ir termins, ko lieto, lai apzīmētu klašu gadījumus.

Piemēri

Turpmākajos piemēros mēs izveidosim klasi ar nosaukumu Human. Šajā klasē ir atribūti name (cilvēka vārdam) un friend (drauga vārdam). Katra no klases Human metodēm satur instrukciju sarakstu, kurā izmantoti gan vārda, gan drauga atribūti.

Python

Šis kods ir rakstīts Python valodā.

klase Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Mans vārds ir "+self. name) def say_goodnight(self): if self. friend is None: print("Labas nakts nevienam.") else: print("Good night "+self. friend. vārds) # Izveido jaunu cilvēka objektu vārdā stephen ar vārdu "Stephen" stephen = Human("Stephen") # Izveido jaunu cilvēka objektu vārdā joe ar vārdu "Joe" un stephen kā draugu joe = Human("Joe", stephen) stephen. say_name() # Rāda "Mans vārds ir Stephen" stephen. say_goodnight() # Rāda "Labas nakts nevienam." joe. say_name() # Rāda "Mans vārds ir Joe" joe. say_goodnight() # Rāda "Labas nakts Stephen".

Java

Šis kods ir Java valodā.

Cilvēku klase

klase Human { private String name = "bez nosaukuma"; // šī Cilvēka vārds private Human friend = null; // Cilvēka draugs // Šī metode izveido jaunu Cilvēka objektu, ja tiek dots vārds un draugs public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Šī metode izveido jaunu Cilvēka objektu arī tad, ja tiek dots tikai vārds public Human(String name) { this. name = name; this. friend = null; }      // Šī metode izveido jaunu Cilvēka objektu, ja nav dots ne vārds, ne draugs public Human() { this. name = "bezvārda"; this. friend = null; } public void sayName() { System. out. println("Mans vārds ir " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Labas nakts nevienam."); } else { System. out. println("Labas nakts " + friend. name); }     } }

Metode sarunai ar iepriekšminēto Cilvēka klasi

klase Main { public static void main(String[] args) { // Izveido jaunu Cilvēka objektu stephen ar vārdu "Stephen" Cilvēks stephen = new Human("Stephen"); // Izveido jaunu Cilvēka objektu joe ar vārdu "Joe" un stephen kā draugu Cilvēks joe = new Human("Joe", stephen); stephen. sayName(); // Rāda "Mani sauc Stephen" stephen. sayGoodnight(); // Rāda "Labas nakts, neviens." joe. sayName(); // Rāda "Mani sauc Joe" joe. sayGoodnight(); // Rāda "Labas nakts, Stephen" } }

Kritika

Lai gan objektorientētā programmēšana ir populāra, ir daudz cilvēku, kas uzskata, ka tā ir slikta, un kritizē to.

  • Luka Kardelli (Luca Cardelli) uzrakstīja darbu ar nosaukumu "Objektorientēto valodu sliktās inženiertehniskās īpašības" (Bad Engineering Properties of Object-Oriented Languages).
  • Ričards Stallmans 1995. gadā rakstīja: "OOP pievienošana Emacs nav nepārprotams uzlabojums; es izmantoju OOP, strādājot pie Lisp Machine logu sistēmām, un es nepiekrītu ierastajam uzskatam, ka tas ir labāks programmēšanas veids."
  • Potok et al. pētījumā teikts, ka produktivitāte starp OOP un procedurālo pieeju atšķiras ļoti maz.
  • Kristofers J. Datums (Christopher J. Date) teica, ka OOP salīdzināšana ar citām lietām, jo īpaši tas, kā OOP un otra lieta ir saistītas, ir sarežģīta, jo cilvēki nav vienisprātis par OOP nozīmi.
  • Aleksandrs Stepanovs ierosināja, ka OOP sniedz viedokli, kas ir ierobežots, ciktāl matemātika, un nosauca to par "gandrīz tikpat daudz krāpšanu kā mākslīgais intelekts".
  • Pols Greiems (Paul Graham), veiksmīgs interneta pārdevējs un programmētājs, ir ierosinājis, ka OOP mērķis ir darboties kā ganāmpulka mehānismam, kas vidējiem programmētājiem vidējās organizācijās neļauj "nodarīt pārāk lielu kaitējumu". Tas arī palēnina ātrākus, labākus programmētājus, kuri zina, kā darīt lietas jaudīgāk un kompaktāk.. [1]

Jautājumi un atbildes

J: Kas ir objektorientēta programmēšana?


A: Objektorientētā programmēšana ir veids, kā rakstīt datorprogrammas, izmantojot "objektus", kas apzīmē datus un metodes.

Q: Ar ko objektorientētā programmēšana atšķiras no procedurālās programmēšanas?


A: Procedurālās programmēšanas gadījumā datorprogrammas ir instrukciju saraksts datoram, kas liek tam veikt noteiktas darbības noteiktā veidā. Objektorientētajā programmēšanā datorprogrammās tiek izmantoti objekti, kas savā starpā sarunājas, lai mainītu šajos objektos esošos datus un darbotos tā, kā lietotājs vēlas.

J: Kādu labumu objektorientētā programmēšana dod izstrādātājiem?


A: Objektorientētā programmēšana ļauj kodu viegli atkārtoti izmantot citās programmas daļās vai pat citos cilvēkos.

J: Ar ko ir pazīstama Python programmēšanas valoda?


A: Python ļauj datorprogrammas rakstīt gan objektorientētas, gan procedurālas programmēšanas režīmā.

J: Vai varat minēt piemērus par programmēšanas valodām, kas ļauj rakstīt datorprogrammas objektorientētā programmēšanā?


A: Programmēšanas valodas, kas ļauj rakstīt datorprogrammas objektorientētā programmēšanā, ir C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# utt.

J: Kas ir objekti objektorientētajā programmēšanā?


A: Objekti ir objektorientētās programmēšanas vienības, kas satur datus un metodes.

J: Kā objekti darbojas objektorientētajā programmēšanā?


A: Objekti mijiedarbojas viens ar otru, lai mainītu šajos objektos esošos datus un darbotos tā, kā lietotājs vēlas.

AlegsaOnline.com - 2020 / 2023 - License CC3