- Објектно оријентисано програмирање (ООП) организује код око објеката, што олакшава представљање стварног света.
- Кључни концепти ООП-а укључују енкапсулацију, наслеђивање, полиморфизам и апстракцију.
- ООП промовише поновну употребу кода и побољшава модуларност и безбедност софтвера.
- Популарни ООП језици као што су Јава, C++ и Пајтон нуде разноврсне функције и приступе.
Објектно оријентисани програмски језик: основе и еволуција
Класе и објекти: Стубови ООП-а
class Coche:
def __init__(self, color, marca, modelo):
self.color = color
self.marca = marca
self.modelo = modelo
def arrancar(self):
print("El coche está arrancando")
def acelerar(self):
print("El coche está acelerando")
mi_coche = Coche("rojo", "Toyota", "Corolla")
coche_de_mi_amigo = Coche("azul", "Honda", "Civic")
Енкапсулација: Заштита података у ООП-у
class CuentaBancaria:
def __init__(self, saldo_inicial):
self.__saldo = saldo_inicial # El doble guion bajo hace que sea privado
def depositar(self, cantidad):
if cantidad > 0:
self.__saldo += cantidad
return True
return False
def retirar(self, cantidad):
if cantidad > 0 and self.__saldo >= cantidad:
self.__saldo -= cantidad
return True
return False
def obtener_saldo(self):
return self.__saldo
Наслеђивање: поновна употреба и хијерархија у коду
class Vehiculo:
def __init__(self, marca, modelo):
self.marca = marca
self.modelo = modelo
def arrancar(self):
print(f"El {self.marca} {self.modelo} está arrancando")
class Coche(Vehiculo):
def __init__(self, marca, modelo, num_puertas):
super().__init__(marca, modelo)
self.num_puertas = num_puertas
def abrir_maletero(self):
print(f"Abriendo el maletero del {self.marca} {self.modelo}")
Полиморфизам: Флексибилност у објектно оријентисаном програмирању
Постоје два главна типа полиморфизма:
- Полиморфизам преоптерећења: Омогућава да више метода има исто име, али различите параметре.
- Препиши полиморфизам: Дозвољава поткласи да обезбеди специфичну имплементацију методе која је већ дефинисана у њеној суперкласи.
class Animal:
def hacer_sonido(self):
pass
class Perro(Animal):
def hacer_sonido(self):
return "Guau!"
class Gato(Animal):
def hacer_sonido(self):
return "Miau!"
def animal_sonido(animal):
print(animal.hacer_sonido())
perro = Perro()
gato = Gato()
animal_sonido(perro) # Imprime: Guau!
animal_sonido(gato) # Imprime: Miau!
Апстракција: Поједностављивање сложености у ООП-у
from abc import ABC, abstractmethod
class FiguraGeometrica(ABC):
@abstractmethod
def area(self):
pass
@abstractmethod
def perimetro(self):
pass
class Rectangulo(FiguraGeometrica):
def __init__(self, base, altura):
self.base = base
self.altura = altura
def area(self):
return self.base * self.altura
def perimetro(self):
return 2 * (self.base + self.altura)
Предности и недостаци објектно оријентисаног програмског језика
Предности:
- Поновна употреба кода: Наслеђивање и састав омогућавају ефикасну поновну употребу кода.
- Модуларност: Код је организован у логичке јединице (објекте), што га чини лакшим за одржавање и отклањање грешака.
- ФлексибилностПолиморфизам омогућава објектима да се понашају различито у зависности од контекста.
- Безбедност: Енкапсулација штити податке од неовлашћеног приступа.
- Моделирање у стварном свету: ООП омогућава да се ентитети из стварног света интуитивно представе.
Недостаци:
- Крива учења: Можда ће бити тешко разумети почетницима који су навикли на процедурално програмирање.
- Перформансе: У неким случајевима, ООП може бити мање ефикасан од других парадигми.
- Величина програмаОбјектно оријентисани програми имају тенденцију да буду већи од својих процедуралних колега.
- Почетни дизајн: Захтева пажљив дизајн од самог почетка, што може да потраје више времена.
Популарни ООП језици: Јава, Ц++, Питхон и још много тога
- ЈаваПозната по свом моту „напиши једном, покрени било где“, Јава се широко користи у развоју предузећа и Андроида.
- Ц + +: Проширење за Ц које додаје ООП функције. Популаран је у развоју система и видео игрица због својих перформанси.
- ПитонВисок ниво програмирања познат по својој једноставности и читљивости. Подржава више парадигми, укључујући објектно-ориентирано програмирање (ООП).
- C#: Развијен од стране Мицрософта, сличан је Јави и широко се користи у развоју Виндовс апликација и игрица са Унити-ом.
- рубинПознат по својој елегантној синтакси и Ruby on Rails оквиру за веб развој.
- Брз: Апплеов језик за иОС и мацОС развој, дизајниран да буде безбедан и са високим перформансама.
# Ejemplo en Python
class Persona:
def __init__(self, nombre):
self.nombre = nombre
def saludar(self):
print(f"Hola, soy {self.nombre}")
persona = Persona("Ana")
persona.saludar() # Imprime: Hola, soy Ana
// Ejemplo en Java
public class Persona {
private String nombre;
public Persona(String nombre) {
this.nombre = nombre;
}
public void saludar() {
System.out.println("Hola, soy " + nombre);
}
}
public class Main {
public static void main(String[] args) {
Persona persona = new Persona("Ana");
persona.saludar(); // Imprime: Hola, soy Ana
}
}
Обрасци дизајна у ООП-у: доказана решења за уобичајене проблеме
Постоје три главне категорије шаблона дизајна:
- Цреатионал Паттернс: Баве се механизмима стварања објеката. Примери укључују:
- Синглетон: Осигурава да класа има само једну инстанцу.
- Фабрички метод: Дефинише интерфејс за креирање објекта, али дозвољава подкласама да одлуче коју класу да инстанцирају.
- Струцтурал Паттернс: Они се баве тиме како су класе и објекти састављени да формирају веће структуре. Примери укључују:
- Адаптер: Омогућава да некомпатибилни интерфејси раде заједно.
- Декоратор: динамички додајте одговорности објектима.
- Обрасци понашања: Баве се комуникацијом између објеката. Примери укључују:
- Посматрач: Дефинише зависност један-према-више између објеката.
- Стратегија: Дефинише породицу алгоритама, инкапсулира сваки од њих и чини их заменљивим.
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(Singleton, cls).__new__(cls)
return cls._instance
# Uso
s1 = Singleton()
s2 = Singleton()
print(s1 is s2) # Imprime: True
Будућност објектно оријентисаног програмског језика
- Интеграција са другим парадигмама: Видимо тренд ка језицима и оквирима који комбинују ООП са функционалним програмирањем и другим парадигмама, нудећи најбоље из оба света.
- ООП у облакуСа порастом рачунарства у облаку, принципи објектно-ориентираног пословања (OOP) се прилагођавају дистрибуираним архитектурама и микросервисима.
- ООП и вештачка интелигенција: ООП проналази нове примене у дизајну АИ и система за машинско учење.
- Изразитији језици: Нови програмски језици траже начине да ООП учине интуитивнијим и изражајнијим.
- ПрилагодљивостРазвијају се нове технике како би објектно оријентисани системи били скалабилнији за велике податке и апликације.