Архив Заявка в команду Календарь Справка Гарант-сервис Руководство форума Правила форума Обратная связь/контакты
Вернуться   WM-FORUM.NET.RU > Форум вебмастеров про сайты, seo, операционные системы. > Форум по программированию

Важная информация!

Форум по программированию Курсы по программированию и разработке, видео-лекции, тесты, упражнения и многое другое.

Ответ
 
Опции темы Опции просмотра
Старый 01.05.2022, 19:31       #11
SeaMan75
«Герой форума WM-Forum»
 
Аватар для SeaMan75
Дополнительная информация
По умолчанию

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

Основные парадигмы программирования:
Императивное программирование
в исходном коде программы записываются инструкции (команды);
инструкции должны выполняться последовательно;
данные, получаемые при выполнении предыдущих инструкций, могут читаться из памяти последующими инструкциями;
данные, полученные при выполнении инструкции, могут записываться в память. Пример такого подхода - программа на языке Ассемблера, например:
Код:
   Lda # 05
   Sta  $8000
   Inc  $8000
   Tax
   Inx 
   Stx $8001
Декларативное программирование
[/COLOR]Декларати́вное программи́рование — парадигма программирования, в которой задаётся спецификация решения задачи, то есть описывается ожидаемый результат, а не способ его получения. Противоположностью декларативного является императивное программирование, при котором на том или ином уровне детализации требуется описание последовательности шагов для решения задачи. В качестве примеров декларативных языков обычно приводят HTML и SQL. Вытащил [Только зарегистрированные и активированные пользователи могут видеть ссылки] про это



Структурное программирование

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

Логическое программирование

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

Последний раз редактировалось SeaMan75; 01.05.2022 в 19:36.
SeaMan75 вне форума  
Ответить с цитированием Вверх
Старый 04.07.2022, 09:51       #12
Les_97
«Участник WM-Forum»
 
Аватар для Les_97
Дополнительная информация
По умолчанию

Основная теория ООП то , что надо знать !
Les_97 вне форума  
Ответить с цитированием Вверх
Старый 05.07.2022, 23:17       #13
SeaMan75
«Герой форума WM-Forum»
 
Аватар для SeaMan75
Дополнительная информация
По умолчанию

Цитата:
Сообщение от Les_97 Посмотреть сообщение
Определение интерфейса как реализуется интерфейсы
Это же раздел для C++. В С++ интерфейсы немного иначе делаются, не так, как в Java.
На всякий случай еще вот создал тему: [Только зарегистрированные и активированные пользователи могут видеть ссылки]
Чтобы там все описывать простыми языком без привязки к какому-либо языку программирования.

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

В C++ немного иначе организована работа с интерфейсами. Смысл интерфейса тот же, но сделано все иначе:
C++ поддерживает множественное наследование и абстрактные классы, поэтому отдельная синтаксическая конструкция для интерфейсов в этом языке не нужна. Интерфейсы определяются при помощи абстрактных классов, а реализация интерфейса производится путём наследования этих классов.
Абстрактные классы - это классы, которые содержат или наследуют без переопределения хотя бы одну чистую виртуальную функцию. Абстрактный класс определяет интерфейс для переопределения производными классами.
Что такое чистые виртуальные функции? Это функции, которые не имеют определения. Чтобы определить виртуальную функцию как чистую, ее объявление завершается значением "=0".
Так вот, если хотя бы одна функция в классе будет без реализации (без определения), то этот класс будет абстрактным, например:
Код:
class Figure
{
public:
    virtual double getSquare() = 0;
    virtual double getPerimeter() = 0;
    virtual void showFigureType() = 0;
};
А вот в Java для объявления абстрактного класса применяется ключевое слово abstract

А дальше все точно, как и в C++:
Цитата:
Абстрактный класс похож на обычный класс. В абстрактном классе также можно определить поля и методы, но в то же время нельзя создать объект или экземпляр абстрактного класса. Абстрактные классы призваны предоставлять базовый функционал для классов-наследников. А производные классы уже реализуют этот функционал.
  • В Java понятие "чистая виртуальная функция" не существует, для объявления абстрактного класса нужно применять ключевое слово absract, а в C++ надо для тех же целей объявить чистую виртуальную функцию
  • из абстрактных классов нельзя создать объекты
  • функции реализуются в наследниках
В примере выше объявили абстрактный класс для какой-то геометрической фигуры. У любой фигуры есть периметр и площадь. Ну еще и тип фигуры Это общая часть. Ее и можно запихнуть в абстрактный класс. Далее от оного класса создадим наследников - так сказать, уточним, какие именно фигуры будут и как у них посчитать площадь и периметр.
Без абстрактного класса пришлось бы
Код:
    virtual double getSquare() = 0;
    virtual double getPerimeter() = 0;
    virtual void showFigureType() = 0;
объявлять ПОВТОРНО в каждом классе. Пришлось бы создать два класса, оторванных друг от друга и в каждом из них прописать что такое периметр и площадь и как они считаются. Было бы два класса: прямоугольник (Rectangle) и круг (Circle), которые абсолютно никак бы не были связаны между собой. А абстрактный класс позволит объединить оба класса между собой, таким образом не придется дублировать код, а прямоугольник и окружность - это фигуры, у них есть площадь, периметр и тип и все это будет в базовом абстрактном классе, а наследники только уточнят (реализуют методы базового класса), как это все посчитать:
Код:
#include <iostream>
 
class Figure
{
public:
    virtual double getSquare() =0;
    virtual double getPerimeter() =0;
    virtual void showFigureType()=0;
};
class Rectangle : public Figure
{
private:
    double width;
    double height;
public:
    Rectangle(double w, double h) : width(w), height(h)
    {
    }
    double getSquare() override
    {
        return width * height;
    }
    double getPerimeter() override
    {
        return width * 2 + height * 2;
    }
    void showFigureType()
    {
        std::cout << "Прямоугольник" << std::endl;
    }
};
class Circle : public Figure
{
private:
    double radius;
public:
    Circle(double r) : radius(r)
    {
    }
    double getSquare() override
    {
        return radius * radius * 3.14;
    }
    double getPerimeter() override
    {
        return 2 * 3.14 * radius;
    }
    void showFigureType()
    {
        std::cout << "Окружность" << std::endl;
    }
};
 
int main()
{
    Rectangle rect(30, 50);
    Circle circle(30);
     
    std::cout << "Площадь прямоугольника: " << rect.getSquare() << std::endl;
    std::cout << "Площадь окружности: " << circle.getSquare() << std::endl;
 
    return 0;
}
Чтобы лучше понять суть абстракции, можно целиком этот код скопировать в редактор на страничке [Только зарегистрированные и активированные пользователи могут видеть ссылки] и запустить на выполнение.
А про непосредственно интерфейсы дополню немного позже. И в отдельной ветке, не в C++

Последний раз редактировалось SeaMan75; 06.07.2022 в 00:06.
SeaMan75 вне форума  
Ответить с цитированием Вверх
Старый 25.08.2022, 14:49       #14
Les_97
«Участник WM-Forum»
 
Аватар для Les_97
Дополнительная информация
По умолчанию

Добрый день
К производным типам данных относят

Классы, структуры,объединения , переселения простые примеры + определения
Les_97 вне форума  
Ответить с цитированием Вверх
Старый 28.08.2022, 14:02       #15
SeaMan75
«Герой форума WM-Forum»
 
Аватар для SeaMan75
Дополнительная информация
По умолчанию

Цитата:
Сообщение от Les_97 Посмотреть сообщение
Понятие парадигмы программирования.
Паради́гма программи́рования — это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию). Ну или самым простым языком - подход к программированию.


Цитата:
Сообщение от Les_97 Посмотреть сообщение
Основные парадигмы программирования Структурное программирование. Модульное программирование
  • Императивное программирование
  • Декларативное программирование
  • Структурное программирование
  • Функциональное программирование
  • Логическое программирование
  • Объектно-ориентированное программирование
  • Компонентно-ориентированное программирование
  • Прототипно-ориентированное программирование
  • Агентно-ориентированное программирование

Структурное программирование — парадигма программирования, в основе которой лежит представление программы в виде иерархической структуры блоков.

В основу структурного программирования положены следующие достаточно простые положения:
  • алгоритм и программа должны составляться поэтапно (по шагам).
  • сложная задача должна разбиваться на достаточно простые части, каждая из которых имеет один вход и один выход.
  • логика алгоритма и программы должна опираться на минимальное число достаточно простых базовых управляющих структур.
Базовыми элементарными структурами являются структуры: следование, ветвление и повторение (цикл), любой алгоритм может быть реализован в виде композиции этих трех конструкций.

Достоинства структурного программирования:
  • повышается надежность программ (благодаря хорошему структурированию при проектировании, программа легко поддается тестированию и не создает проблем при отладке);
  • повышается эффективность программ (структурирование программы позволяет легко находить и корректировать ошибки, а отдельные подпрограммы можно переделывать (модифицировать) независимо от других);
  • уменьшается время и стоимость программной разработки;
  • улучшается читабельность программ.

Модульное программирование
Модульное программирование является естественным следствием проектирования сверху вниз и заключается в том, что программа разбивается на части – модули, разрабатываемые по отдельности.

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

Модуль должен обладать следующими свойствами:
  • один вход и один выход – на входе программный модуль получает определенный набор исходных данных, выполняет содержательную обработку и возвращает один набор результатных данных, т.е. реализуется стандартный принцип IPO (Input — Process — Output — вход-процесс-выход);
  • функциональная завершенность – модуль выполняет перечень регламентированных операций для реализации каждой отдельной функции в полном составе, достаточных для завершения начатой обработки;
  • логическая независимость – результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей;
  • слабые информационные связи с другими программными модулями – обмен информацией между модулями должен быть по возможности минимизирован;
  • обозримый по размеру и сложности программный код.

Модули содержат определение доступных для обработки данных, операции обработки данных, схемы взаимосвязи с другими модулями.

Каждый модуль состоит из спецификации и тела. Спецификации определяют правила использования модуля, а тело – способ реализации процесса обработки.

Принципы модульного программирования программных продуктов во многом сходны с принципами нисходящего проектирования: сначала определяются состав и подчиненность функций, а затем — набор программных модулей, реализующих эти функции.
SeaMan75 вне форума  
Ответить с цитированием Вверх
Старый 22.03.2023, 23:37       #16
ant
«Новичок на WM-Forum»
«Пропавший без вести»
 
Аватар для ant
Дополнительная информация
По умолчанию

ООП особо опасный подход. Как настроить объектов, потом ток отбиваешься от них лопатой))
ant вне форума  
Ответить с цитированием Вверх
Старый 13.05.2023, 15:53       #17
ant
«Новичок на WM-Forum»
«Пропавший без вести»
 
Аватар для ant
Дополнительная информация
По умолчанию

Ура, я снова здесь!!!
ant вне форума  
Ответить с цитированием Вверх
Ответ

Метки
начинающие , программирование , с++


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование шаг за шагом SeaMan75 Операционные системы и программы 8 05.07.2022 23:12
Программирование онлайн для новичков SeaMan75 Компьютеры 18 10.12.2019 10:46
Java. Kotlin. Программирование Android устройств SeaMan75 Форум по программированию 1 12.07.2019 14:28
Бизнес идея на дому для начинающих и без вложений. Онлайн-репетиторство. Ruta Создание бизнеса 4 13.10.2017 19:46


Текущее время: 10:33. Часовой пояс GMT +3.


Forum powered by vBulletin ®. 2000 - 2024 ©, vBulletin Solutions, Inc.

WM-FORUM.NET.RU © 2024 | WM-FORUM ®, Ltd. | Все права защищены.
391 Sutter Street, Office 302, San Francisco, CA 94108, USA.

По всем вопросам пишите на: info@wm-forum.net.ru
Все материалы добавляются пользователями. При копировании материалов форума активная ссылка на сайт обязательна.
Сайт может содержать контент не предназначенный для лиц младше 18-ти лет.
Контент 18+

digitalocean

Перевод: zCarot

Рейтинг@Mail.ru