Programowanie obiektowe

Programowanie obiektowe (OOP) to sposób pisania programów komputerowych, który wykorzystuje pojęcie "obiektów" do reprezentowania danych i metod. Zazwyczaj programy komputerowe były tylko listą instrukcji do komputera, mówiących mu, aby robił pewne rzeczy w określony sposób, co jest nazywane programowaniem proceduralnym. Jednak w programowaniu obiektowym programy komputerowe wykorzystują obiekty, które rozmawiają ze sobą i zmieniają dane w tych obiektach, do pracy w sposób, który jest pożądany przez użytkownika. Ponadto, ze względu na sposób, w jaki programowanie obiektowe jest projektowane, pomaga ono programiście poprzez umożliwienie łatwego ponownego użycia kodu przez inne części programu lub nawet przez inne osoby.

Większość języków programowania to mieszanka różnych rodzajów sposobów pisania programów komputerowych. Na przykład, Python pozwala na pisanie programów komputerowych zarówno w programowaniu obiektowym jak i proceduralnym. Istnieje wiele języków programowania, które pozwalają na pisanie programów komputerowych w OOP, Niektóre z tych języków programowania są, na przykład: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, itd.

Cechy charakterystyczne

Główną ideą programowania obiektowego jest to, że wszystko jest obiektem. Obiekt może być jednak różnego rodzaju:

  • Zmienne mogą zawierać informacje (lub dane) różnych typów, które są obsługiwane przez język programowania. Przykładem może być typ danych w postaci liczb całkowitych oraz struktura danych listy. Zmienne to pomysł, który jest już dostępny w proceduralnych językach programowania. W programowaniu obiektowym zmienne są znane głównie jako atrybuty.
  • Procedury (zwane również funkcjami, metodami lub rutynami) to lista instrukcji nakazujących komputerowi pobranie danych wejściowych, wykonanie pewnych obliczeń lub zmianę danych i zwrócenie ich użytkownikowi. Procedury to również pomysł, który jest już dostępny w językach programowania proceduralnego. W programowaniu obiektowym procedury znane są głównie jako metody.
  • Klasy są zbiorem różnych zmiennych i procedur. Klasy zazwyczaj rozmawiają ze sobą w celu dokonania zmian w danych, aby pracować w sposób, jaki chce użytkownik.

Obiekty to termin odnoszący się do instancji klas.

Przykłady

W poniższych przykładach tworzymy klasę o nazwie Człowiek. Klasa ta zawiera atrybuty nazwa (dla imienia osoby) i przyjaciel (dla imienia przyjaciela). Każda z metod w klasie Human zawiera listę instrukcji, które wykorzystują zarówno atrybuty imienia jak i przyjaciela.

Python

Ten kod jest w Pythonie.

klasa Human(object): def __init__(self, name, friend=None): self. name = nazwa self. friend = friend def say_name(self): print("Moje imię to "+self. name") def say_goodnight(self): if self. friend is None: print("Good night nobody.") else: print("Good night "+self. friend. name) # Create a new Human object named stephen with name "Stephen" stephen = Human("Stephen") # Create a new Human object named joe with name "Joe" and stephen as a friend joe = Human("Joe", stephen) stephen. say_name() # Shows 'My name is Stephen' stephen. say_goodnight() # Shows 'Good night nobody.' joe. say_name() # Shows 'My name is Joe' joe. say_goodnight() # Shows 'Good night Stephen'

Jawa

Ten kod jest w języku Java.

Klasa ludzka

class Human { private String name = "unnamed"; // the name of this Human private Human friend = null; // the Human's friend // This method creates a new Human object when given the name and friend public Human(String name, Human friend) { this. name = name; this. friend = friend;      } // Ta metoda tworzy również nowy obiekt typu Human, gdy zostanie nadana tylko nazwa public Human(String name) { ta. nazwa = nazwa; ta. friend = null;      } // Ta metoda tworzy również nowy obiekt typu Human, gdy nie podano zarówno nazwy, jak i przyjaciela publicznego Human() {ta. name = "unnamed"; ta. friend = null;      public void sayName() { System. out. println("Moje imię to " + to. imię); } public void sayGoodnight() { if (friend == null) { System. out. println("Good night nobody.");          } else { System. out. println("Good night " + friend. name);           } }

Sposób na rozmowę z klasą ludzką powyżej

class Main { public static void main(String[] args) { // Create a new Human object stephen with name "Stephen" Human stephen = new Human("Stephen"); // Create a new Human object joe with name "Joe" and stephen as a friend Human joe = new Human("Joe", stephen); stephen. sayName(); // Pokazuje 'My name is Stephen' stephen. sayGoodnight(); // Pokazuje 'Good night nobody.' joe. sayName(); // Pokazuje 'My name is Joe' joe. sayGoodnight(); // Pokazuje 'Good night Stephen'      } }

Krytyka

Choć programowanie obiektowe jest popularne, to jednak jest wiele osób, które uważają, że jest złe i krytykują je.

  • Luca Cardelli napisał pracę zatytułowaną "Bad Engineering Properties of Object-Oriented Languages".
  • Richard Stallman napisał w 1995 roku: "Dodanie OOP do Emacsa nie jest wyraźnym usprawnieniem; używałem OOP podczas pracy nad systemami okienek Lisp Machine i nie zgadzam się ze zwykłym poglądem, że jest to lepszy sposób programowania".
  • Badanie przeprowadzone przez Potoka i wsp. mówi nam, że różnica w wydajności pomiędzy OOP a podejściem proceduralnym jest bardzo niewielka.
  • Christopher J. Date powiedział, że porównywanie OOP z innymi rzeczami, zwłaszcza z tym, jak OOP i inne rzeczy są ze sobą powiązane, jest trudne, ponieważ ludzie nie zgadzają się co do znaczenia OOP.
  • Aleksander Stepanov zasugerował, że OOP daje punkt widzenia, który jest ograniczony do matematyki, i nazwał go "prawie tak samo jak sztuczna inteligencja".
  • Paul Graham, odnoszący sukcesy sprzedawca internetowy i programista, zasugerował, że celem OOP jest działanie jako mechanizm stadny, który powstrzymuje przeciętnych programistów w przeciętnych organizacjach przed "robieniem zbyt dużych szkód". Spowalnia to również szybszych, lepszych programistów, którzy wiedzą jak robić rzeczy w bardziej wydajny i zwarty sposób. [1]

Pytania i odpowiedzi

P: Czym jest programowanie obiektowe?


O: Programowanie zorientowane obiektowo to sposób pisania programów komputerowych przy użyciu "obiektów" oznaczających dane i metody.

P: Czym różni się programowanie obiektowe od programowania proceduralnego?


O: W programowaniu proceduralnym programy komputerowe są listą instrukcji dla komputera, nakazujących mu wykonywanie określonych czynności w określony sposób. W programowaniu obiektowym programy komputerowe używają obiektów, które komunikują się ze sobą, aby zmieniać dane w tych obiektach i działać w sposób pożądany przez użytkownika.

P: W jaki sposób programowanie obiektowe przynosi korzyści deweloperom?


O: Programowanie obiektowe pozwala na łatwe ponowne wykorzystanie kodu w innych częściach programu lub nawet przez inne osoby.

P: Z czego znany jest język programowania Python?


O: Python pozwala na pisanie programów komputerowych zarówno w programowaniu obiektowym, jak i proceduralnym.

P: Czy może Pan podać przykłady języków programowania, które umożliwiają pisanie programów komputerowych w programowaniu obiektowym?


O: Języki programowania, które umożliwiają pisanie programów komputerowych w programowaniu obiektowym obejmują C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# itp.

P: Czym są obiekty w programowaniu obiektowym?


O: Obiekty to jednostki w programowaniu obiektowym, które zawierają dane i metody.

P: Jak działają obiekty w programowaniu obiektowym?


Obiekty wchodzą ze sobą w interakcje, aby zmieniać dane w tych obiektach i działać w sposób pożądany przez użytkownika.

AlegsaOnline.com - 2020 / 2023 - License CC3