3 основные парадигмы программирования, которые вы должны знать

Динамическое программирование примеры Изучение

Парадигмы программирования — это теории или идеи, которые помогают формировать различные языки, которые вы используете для создания программного обеспечения. Они представляют собой основные характеристики языка программирования, определяющие его поведение.

Поэтому можно с уверенностью сказать, что парадигма так же важна, как синтаксис и семантика языка программирования. Большинство популярных языков программирования используют один из нескольких типов парадигмы программирования.

1. Императивное программирование

Императивная парадигма — один из самых ранних подходов к программированию, появившийся еще в 1950-х годах. Эта парадигма сильно зависит от использования переменных, команд и процедур.

Императивное программирование использует команды для проверки и обновления переменных, сохраняя состояние в программе. Затем комбинация команд создает процедуру. Абстракция данных играет решающую роль в представлении данных, что облегчает слабую связь.

Одним из самых популярных языков, использующих императивную парадигму, является C. Этот язык программирования поддерживает только функциональные процедуры.

Пример императивной программы

#include <stdio.h>
#include <string.h>

struct Customer
{
int CustomerId;
char OrderNumber[20];
char Name[30];
float OrderTotal;
};

void main ()
{
struct Customer John = {4000, «HK1001», «John Doe», 200.00};
struct Customer Jane = {4001, «HK1002», «Jane Doe», 600.00};

memcpy(Jane.Name , «Jane Jones», 10);

printf («The total cost for %s order number %s is: $%.2f»,Jane.Name, Jane.OrderNumber, Jane.OrderTotal);
}

Приведенная выше программа на C создает структуру Customer. Тип struct — яркий пример абстракции данных в C.

Программа демонстрирует, как команды могут создавать, обновлять и отображать состояние — с помощью структурной переменной Jane. Все эти команды находятся в функции main(), которая в целом представляет собой процедуру, определяющую, сколько денег клиент должен заплатить за заказ.

Выполнение приведенной выше программы приведет к следующему выводу в вашей консоли:

The total cost for Jane Jones order number HK1002 is: $600.00

2. Объектно-ориентированное программирование

Парадигма объектно-ориентированного программирования зародилась в 1990-х годах. Эта парадигма является потомком императивной. Однако объектно-ориентированная парадигма хранит состояние в объектах, а не в переменных.

Языки программирования, использующие объектно-ориентированную парадигму, часто лучше справляются со сложными приложениями. Основными функциями парадигмы являются объекты, классы, инкапсуляция данных, наследование и полиморфизм.

Класс — это основной компонент объектно-ориентированной программы. Некоторые классы наследуют свойства и операции от других классов. Программисты описывают это как отношения родитель-потомок. Он подпадает под категорию полиморфизма подтипа.

Классы содержат инструменты для скрытия и защиты конфиденциальных данных посредством инкапсуляции. После того как вы определили класс, вы можете использовать его для создания объектов.

Тремя наиболее популярными языками программирования, использующими объектно-ориентированную парадигму, являются Java, C++ и Python.

Пример объектно-ориентированной программы

Это приложение демонстрирует большинство возможностей объектно-ориентированного языка программирования Java. Определенный тип клиентов наследует поведение от более общего типа. Все клиенты реализуют интерфейс. Конкретный тип клиента переопределяет метод из интерфейса.

Файл Discountable.java

public interface Discountable {

public void grandTotal(String orderNumber, double total);

}

Приведенный выше код создает интерфейс. В Java интерфейс является еще одним примером полиморфизма. Он позволяет сущностям, не связанным напрямую, получать доступ к одним и тем же свойствам, например метод grandTotal. Это приложение ориентировано на клиентов, но класс сотрудников также может использовать интерфейс Discountable.

Файл Customer.java

public class Customer implements Discountable {
protected int customerId;
protected String customerName;
protected String customerCode;

public Customer() {
this.customerId = 0;
this.customerName = «»;
this.customerCode = «»;
}

public Customer(int customerId, String customerName, String customerCode) {
this.customerId = customerId;
this.customerName = customerName;
this.customerCode = customerCode;
}

public int getCustomerId() {
return customerId;
}
public void setCustomerId(int customerId) {
this.customerId = customerId;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public String getCustomerCode() {
return customerCode;
}

public void setCustomerCode(String customerCode) {
this.customerCode = customerCode;
}

public double customerType(String customerCode) {
double discount = 0;

if (customerCode.toLowerCase().equals(«pre»)) {
discount = 0.10;
} else if (customerCode.toLowerCase().equals(«gen»)) {
discount = 0.02;
} else if (customerCode.toLowerCase().equals(«new»)) {
discount = 0.05;
}
return discount;
}

@Override
public void grandTotal(String orderNumber, double total) {

double discount = customerType(customerCode);
double discountPercentage = total * discount;
double finalTotal = total — discountPercentage;

System.out.println(«For «+ getCustomerName() + » order Number » + orderNumber + » the grand total is: $» + finalTotal);
}

}

Приведенный выше код создает класс Customer. Он реализует интерфейс Discountable, а затем использует свой метод для расчета и отображения общей суммы на основе категории клиента. Ключевое слово protected в приведенном выше коде является примером инкапсуляции данных; он ограничивает доступ к данным, созданным с помощью этого класса. Таким образом, только подклассы (или дочерние классы) класса Customer будут иметь доступ к его данным.

Файл NewCustomer.java

public class NewCustomer extends Customer {
public NewCustomer() {
super();
}

public NewCustomer(int customerId, String customerName, String customerCode) {
super(customerId, customerName, customerCode);
}

}

Приведенный выше код создает класс NewCustomer, расширяющий класс Customer. Этот класс Java использует наследование для представления отношения родитель-потомок с классом Customer. NewCustomer является дочерним в отношении, поэтому он имеет доступ ко всем свойствам класса Customer. Он импортирует атрибуты класса Customer, используя метод super().

Файл App.java

public class App {
public static void main(String[] args) {
Customer Jane = new NewCustomer(4001, «Jane Jones», «new»);
Jane.grandTotal(«HK1002», 600);
}
}

Приведенный выше код создает исполняемый класс приложения. Этот класс создает объект Customer (Джейн) и с помощью полиморфизма делает Джейн NewCustomer. Наконец, он генерирует общую сумму заказа Джейн. Выполнение приведенной выше программы сгенерирует следующий вывод в консоли:

For Jane Jones order Number HK1002 the grand total is: $570.0

3. Функциональное программирование

Ключевыми понятиями этой парадигмы являются выражения, функции, параметрический полиморфизм и абстракция данных. Выражения являются фундаментальными компонентами функций, используемых языками функционального программирования. Параметрический полиморфизм является одним из трех типов полиморфизма. Этот тип упрощает универсальное программирование с помощью функций и типов.

JavaScript — один из самых популярных языков функционального программирования.

Пример функциональной программы

const Customer = {
IdNumber: 1002,
Name: ‘Jane Jones’,
CustomerCode: ‘new’
}

const main = (customer, func, value) => {
var total = func.apply(null, [ customer.CustomerCode, value ]);
console.log(`${customer.Name} total is: ${total}`);
}

const grandTotal = (CustomerCode, total) => {
if (CustomerCode == «new») {
discount = total * 0.05;
mainTotal = total — discount;
return mainTotal;
} else if (CustomerCode == «pre») {
discount = total * 0.10;
mainTotal = total — discount;
return mainTotal;
}
}

main(Customer, grandTotal, 600);

Программа JavaScript выше имеет литерал объекта и две функции. Он объявляет каждую из функций как выражение, используя стрелочную функцию JavaScript. Функция main() является функцией более высокого порядка. Он принимает функцию grandTotal в качестве одного из своих аргументов, а затем вызывает эту функцию. Это также пример параметрического полиморфизма.

Функция grandTotal() содержит несколько выражений, а объект Customer является примером абстракции данных. Вышеприведенная программа генерирует следующий вывод в консоли:

Jane Jones total is: $570

Сложность языков программирования

Язык программирования может воплощать концепции одной парадигмы программирования, но это не означает, что он ограничен одной парадигмой. Многие популярные языки программирования (такие как Python, Java, JavaScript и C++) являются языками с несколькими парадигмами.

Некоторые парадигмы программирования, такие как императивная и объектно-ориентированная парадигмы, также связаны между собой. Но, несмотря на это родство, есть и существенные различия.

Читайте также:  Primer CSS Layout — вложенные макеты
Оцените статью
bestprogrammer.ru
Добавить комментарий