Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр

Копай Дыру в России

Симуляторы, Приключения, Экшены

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • AlexKud AlexKud 26 постов
  • StariiZoldatt StariiZoldatt 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Ооп

С этим тегом используют

Программирование IT Все
77 постов сначала свежее
Alexander0328
4 года назад

ООП с++⁠⁠

Сижу на лекции по программированию

ООП с++ Программист, Программирование, Ооп, C++, Компьютер, Лекция, Студенты
ООП с++ Программист, Программирование, Ооп, C++, Компьютер, Лекция, Студенты
Показать полностью 2
[моё] Программист Программирование Ооп C++ Компьютер Лекция Студенты
14
14
BalaganChick
BalaganChick
4 года назад
Программирование на python

Основы ООП в Python⁠⁠

Я решил рассказать вам немного про ООП в python. В этом посте мы познакомимся с основными терминами( в этом посте мы рассмотрим инкапсуляцию и полиморфизм ), понятиями и рассмотрим простые задачи на закрепление.

(Объектно-ориентированное программирование) ООП - совокупность понятий и идей программирования, в рамках которой «во главу угла» ставят понятия объектов и классов.

Класс – это описание еще не созданного объекта.

Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост

Объект или экземпляр класса – то, что инициализировано по описанию из класса. Объект имеет описание, структуру и поведение класса.

Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост

Инкапсуляция – это объединение данных и функций в единый компонент.

Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост

В python можно создать приватные и публичные методы класса. Если мы захотим к объекту применить приватный метод, то программа обматерит нас ошибкой AttributeError.

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

Например есть базовый класс машина, от которого наследуются все остальные модели машин.

Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост

Множественное наследование (MRO). Если язык поддерживает множественное наследование, то значит у класса может быть больше одного родителя.

Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост

Класс будет инициализироваться от класса Car, потому что он первый родитель, но все методы будут действовать как от класса Car, так и от класса Motorcycle.

Дандеры - двойные символы подчеркивания.( __init__ )
Одинарный символ подчеркивания перед именем метода. Переменная или метод, начинающиеся с одинарного символа подчеркивания, предназначаются для внутреннего пользования.
Символ подчеркивания в конце ставят в том случаем, если переменная с выбранным именем уже существует.

Магические методы.

object.__new__(cls[,...]) - Вызывается при создании нового экземпляра класса. Первый аргумент – класс, объект которого создается. Остальные аргументы передаются в конструктор класса.

Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост
Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост
object.__call__(self[, args...]) - метод, который выполняется когда объект вызывают как функцию.
Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост
Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост

А теперь задачка.

Основы ООП в Python Python, Ооп, Программирование, IT, Длиннопост

Мое решение можете посмотреть ЗДЕСЬ.

Домашние задание:
Добавьте мерседес и ауди.
Сделайте метод, который позволяет посмотреть купленные машины и считает их суммарную стоимость.
Показать полностью 10
[моё] Python Ооп Программирование IT Длиннопост
19
Harenae
Harenae
4 года назад

C# 2 Часть. Улучшаем калькулятор⁠⁠

C# 1 Часть. Быстрое введение и первый калькулятор, предыдущий пост.

И так, продолжаем работать над нашим калькулятором, но прежде хотелось бы ответить на пару вопросов, а так же хотелось бы сказать @SanyaKharya, спасибо за ссылку на бесплатную VS, ибо сам пользуюсь ломаной с торрентов и о бесплатной не был в курсе, а также @Xellmod за подсказку с форматом подачи.


1. Почему калькулятор без валидаации(проверка на правильность вводимых данных) да ещё и с ошибкой?

2. Почему не написал сразу нормальный?


1. Это был первый пост из этой серии, потому мы выполнили долг каждого программиста, это вывести Hello world и написали самый тупой калькулятор, только чтобы ознакомится с типами данных, перемеными, вводом и выводом, и развлевтлениями.

2. Опять же, первый урок, в этом уже будет несколько версий, для тех кто хочет "сразу нормальный" и тех кто хочет чему-то научится.


А теперь погнали. Начнём с нормальной версии, и будем спускатся к более простым, для того чтобы вы понимали в чём разница я буду делать коментарии между ними.


Первая версия - полноценный калькулятор на две переменны вводимые в одну строку, формата

"123 / 23.88". Данная вверсия имеет проверку на правильность вводимых данных, проверку операции деления на ноль, исключенны все возможные ошибки в работе программы.

Ссылка для копирования даного примера - Калькулятор, если заметите ошибку или есть предложения по улучшению, пишите в комментах

C# 2 Часть. Улучшаем калькулятор Ооп, Программирование, Длиннопост

Второй пример по ссылочке - Калькулятор №2, ну и картинки соотвественно.

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

while() - цикл с условием, пока оно истинно, цикл будет выполнятся

Console.Clear() - Очищает экран консоли

switch() - оператор развлетвлений, используется вместо if, если требуется сравнить "какой-то объект" с большим количеством элементов, в нашем случае отлично себя показывает

static double ConvertToDouble(string line) - функция для проверки вводимых чисел,  где:

static - объявление статичной фукнции, double - означает, что функция возвращает значение типа double, ConvertToDouble - название функции, (string line) - входная переменная типа string, которую мы и будем проверять.

TryParse() - функция, которая при успешном заврешении возвращает true и записывает полученно значение в "out result".

C# 2 Часть. Улучшаем калькулятор Ооп, Программирование, Длиннопост

А вот и третий вариант, Калькулятора. В нём ещё проще, поскольку нет функций, используется только блок try/catch, который в дальнейшем вам ещё не раз пригодится, но желательно, чтобы вам не доводилось его использовать, то-есть ваши программы заранне имели продуманное действие при том или ином исходе.

C# 2 Часть. Улучшаем калькулятор Ооп, Программирование, Длиннопост

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


P.S. Для тех кто хочет попробовать что-то самостоятельно, но не знает что именно, предлагаю написать небольшую игру "Угадай число". Суть в том, что вы создаёте случайное число, а после пытаетесь его угадать вводя с клавиатуры. Для тех новенький рекомендую сделать простой вариант, где вы сам вводите число, с зацикливанием и небольшой менюшкой, а для тех кто хочет поинтересней, то сделать так, чтобы игра играла сама с собой. Для написания данной игры вам понадобится материал в моих постах, в них есть всё, кроме случайных чисел, потому вот:

Сначала создаём объект класса "Random"

Random rand = new Random();

А далее используем функцию генерации случайного числа следующим образом:

int randomNumber = rand.Next(0.100);  // Учтите, что при генерация числа, вводимый диапазон чисел как в примере (0,100) на деле выглядит [0;100), то-есть ноль включительно, но 100 не в счёт. В след посте выложу свой пример решения данной игры. Всем удачки)

Показать полностью 3
[моё] Ооп Программирование Длиннопост
9
Harenae
Harenae
4 года назад

C# 1 Часть. Быстрое введение и первый калькулятор⁠⁠

Первое с чего стоит начать, так это лишится девственности. Потому начнём с самого простого и это "Hello world". Я использую студию VS 2017, потому все примеры будут отуда.


Для начала создаём консольный проект. Для этого в левом верхнем углу выбираем:
Файл - Создать - Проект... или же вызываем это меню с помощью комбинации клавиш Ctrl+Shift+N. Там выбираем С# и находим "Консольное приложение(.NET Framework)", даём нашему проекту имя и нажимаем "ОК". Перед вами появится окно с кодом в котором будет это:


using System;

using System.Text;


namespace HelloWorld

{

class Program

{

static void Main(string[] args)

{


}

}

}


В самом верху находятся библиотеки которые мы будем использовать в проекте, все они добавляются через ключевое слово "using". Далее следует пространство имён, внутри которого лежит наш базовый класс и собственно наш главный поток.


Теперь для того, лишится девствености нам остался всего один шаг. В теле главного потока выполним стандартную консольную функцию для вывода на экран:


static void Main(string[] args)

{

Console.WriteLine("Hello world");


Console.ReadKey();

}


Итак, что же мы делаем, в первой строчке "Console.WriteLine("Hello world");" мы говорим, что из класса "Console", через точку, мы вызываем фунцию "WriteLine()" и передаём ей параметр в виде строки содержащей наш "Hello world" и собственно закачиваем строчку точко с запятой. Но если оставть только эту строчку, то наше приложение сразу же закроется, поскольку главный поток выполняется непрерыно, потому мы останавливаем нашу консоль путём вызова другой фукнции из того же класса "Console", а именно "ReadKey()" - данная функция ожидает нажатия любой клавиши. Итого осталось запустить проект и увидеть счастливое начало:


Hello world


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


Теперь перейдём к типам, в начале часто используемыми для вас будут:

int - целочисленный тип содержащий числа в диапазоне (-2,147,483,648 до 2,147,483,648)

string - это тип данных который хранит в себе строки в виде массива символов

double - тип чисел с плавающей запятой в диапазоне (±5.0 × 10^−324 to ±1.7 × 10^308)


Для начала нам этого хватит, далее по походу дела затроним и остальные типы.

И так, напишем самый простой калькулятор, который может выполнять 4 базовые функции.

Комментарии в C# делаются с помощью "//". Всё что находится в строке за этими линиями будет игнорироватся компилятором.


static void Main(string[] args)

{

Console.WriteLine("Введите первое число"); // Говорим пользователю ввести первое число

int a = int.Parse(Console.ReadLine()); // Смотреть примечание 1"

Console.WriteLine("Введите символ");

string symbol = Console.ReadLine();

Console.WriteLine("Введите второе число");

int b = int.Parse(Console.ReadLine()); // Примечание 1*


int result = 0; // Переменная для вывода


if (symbol == "+")

{

result = a+b;

}

else if (symbol == "-")

{

result = a-b;

}

else if (symbol == "*")

{

result = a*b;

}

else if (symbol == "/")

{

result = a/b;

}


Console.WriteLine("Результат = " + result);

Console.ReadKey();


}


1* В переменную типа int берём значение с консоли предварительно обгорнув его в int.Parse(), всё что вы вводите с консоли является строкой, то-есть типом string, потому дабы записать вводимое значение в int, мы преобразовываем его в int.


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


Итог:

Console.WriteLine(); - функция вывода на экран

Console.ReadKey(); - функция остановки потока(на деле это не так, но сейчас делаем именно это)

int - целочисленный тип данных

int.Parse() - фукнция преобразования других типов в int

if { } - оператор сравнения двух операндов, мы использовали "symbol" и с помощью "==" делали приравнивание, то-бишь если говорить нашим языком "Если символ равен /, то выполнить деление"

else if() - оператор else, срабатывает если первый if при выполнении сравнения вернул false, то-есть "Символ не равен +" и мы переходим к else, но мы используем else if, тоже самое что и просто else, но содержит в себе ещё одно сравнение, таким обраои мы и делаем перебор по командам.

result = a+b - Присваеваем переменной result значения сумирования двух операндов, проще говоря, суму а и b.


В следующем посте улучшим наш калькулятор, добавим проверки, сделаем правильный результат деления, и вывод, а так же воспользуемся оператором switch, поскольку для такого рода калькулятора, он походит лучше, чем if.


Ну и поздравляю с потерей девственности.


P.S. Если у вас нет студии, а вы хотите начать сейчас, то можете либо воспользоваться онлайн компиляторами или же командной строкой(При наличии уставноленного .NET Framework 3.5)

для этого создайте блокнот, запишите ваш пример, и сохраните его в формате .cs, а после в командной строке выполните без кавичек

cd "Путь к папке в которой находится ваш файл с кодом"

Далее с кавычками:

"%systemroot%\Microsoft.NET\Framework\v3.5\csc.exe" program.cs //название вашего файла



Если что, то пишите в комментах, надеюсь был полезен и до новых встреч )

Показать полностью
[моё] Программирование Ооп Длиннопост Текст
19
5
djxyz
4 года назад

Ответ на пост «Парадигмы программирования»⁠⁠1

Ребята, я автор этой статьи, прочитал ваши комментарии, спасибо за критику, я понял, что не смог донести то, что хотел, поэтому постараюсь объяснить коротко цель данной статьи:

да, она далека от полноценного понимания ООП и ФП, так как это настолько обширные темы, что одной короткой статьей(как эта) их не обхватить никак. Посмотреть только на количество статей/роликов на тему "Полиморфизм" - их огромное количество, а это всего лишь часть ООП. Чтобы человеку объяснить тот же полиморфизм, потребуется посвятить его в бесконечный холивар на эту тему, рассказать про все определения полиморфизма, показать подробные примеры - это уже отдельная статья, поэтому тут я постарался написать настолько поверхностно, насколько только можно. Ну а тогда возникает законный вопрос: "А зачем вообще тогда эта статья, какой ее смысл?".

Я хотел донести, что все в программирование взято из жизни, оно построено на нашей жизни. Эти же парадигмы - это то, как ты представляешь мир, кто ты в этом мире, что ты можешь. Мне кажется, что это достаточно интересно, если задуматься. Большинство людей говорят что-то типа: "Мы живем в матрице!", подразумевая под матрицей симуляцию мира (типа мы живем в другом компьютере), так как им кажется, что компьютер очень похож на нашу жизнь, но они даже не задумываются, что этот компьютер и был построен по образу нашего мира.

[моё] Ооп Фп Парадигма Ответ на пост Текст
0
barandyk
4 года назад

Парадигмы программирования⁠⁠1

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


Ну что же, приступим. Скорее всего, многим данное словосочетание покажется пугающим, но, на самом же деле, здесь нет ничего сложного. Что же такое “Парадигма программирования”?

Возьмем определение из википедии:

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

- Хмм, непонятно!


Если говорить самым простым языком, то парадигма программирования – это подход к написанию кода. Читатели без опыта программирования, вероятнее всего, зададутся вопросами: “А что это за такие подходы? То есть, например, ты пишешь код сначала левой рукой, потом правой? Или же ты пишешь код час, а потом полчаса отдыхаешь? Что это за подходы?!”. На самом же деле, подходы подразумевают под собой совсем другое и далеки от примеров, описанных до этого.


Чтобы понять, что это такое, давайте рассмотрим два основных подхода, то есть две основные парадигмы: Объектно-ориентированное программирование (ООП) и Функциональное программирование (ФП). ООП основано на том, что все можно представить в виде объектов, у которых могут быть какие-то характеристики (поля) и они могут выполнять какие-то действия (методы/функции). ФП же основано на описание процессов (функций), а не объектов. Понимаю, пока не понятно, поэтому давайте разберем простейший пример. Представим, что нам нужно как-то складывать и вычитать два числа (a и b). На картинке ниже представлен код, реализующий это в ООП и ФП (код был специально упрощен, чтобы сделать упор именно на разнице двух подходов). Вы сразу можете заметить функции “sum” (сложение) и “subtract” (вычитание), которые мы хотели реализовать.

Парадигмы программирования Ооп, Фп, Парадигма, Длиннопост

- Так, ну функции я вижу, а почему в ООП есть еще “class Calculator”, что это значит?


Как уже было сказано выше, ООП основано на том, что все можно представить в виде объектов: например, есть объект “Вселенная”, она состоит из галактик (объект “Галактика”), та, в свою очередь, состоит из планет (объект “Планета”), на каждой планете могут быть люди (объект “Человек”) и так далее. Возьмем, например, объект “Человек”, его характеристиками (полями) могут быть: цвет кожи, пол, рост, возраст (что-то еще). И также он может выполнять следующие действия (методы/функции): бегать, кушать, работать и так далее. Вы легко можете спроецировать такой подход (парадигму) на жизнь, представить все вокруг с помощью объектов и вы поймете, что любое действие (метод/функция) связано с каким-либо объектом, оно не может существовать само по себе, кто-то должен его выполнять. Именно по этой причине наши действия (методы/функции) “sum” и “subtract” находятся внутри объекта “Calculator” (Калькулятор).

- Интересно! Про ООП я понял, а почему в ФП все функции ни к чему не привязаны, находятся сами по себе?


Помните я говорил, что ФП основано на процессах (функциях)? Давайте опять попробуем спроецировать это на нашу жизнь. Например, возьмем процесс (функцию) создания вселенной, галактики, планеты, человека, процесс (функцию) сложения, вычитания и т.д. Сам процесс (функция) никому не принадлежит - он общий, пользоваться может кто угодно, но при этом каждый процесс (функция) имеет определенные условия, в зависимости от которых получается тот или иной результат. Рассмотрим простой пример из жизни, процесс “Приготовление ужина”: данный процесс может осуществить кто угодно, даже ваш кот или собака, но так как опыта у них нет, то, вероятнее всего, ужин просто не будет приготовлен. То есть получается, что воспользоваться могут все, но результат будет разный.


- Фух, ну теперь понятно, что такое парадигма программирования. Ну все-таки остался вопрос: почему где-то используется одна парадигма, а где-то другая?


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

1) [ООП] Объект “Человек”, который не имеет никаких характеристик (полей) (например, пол, рост и количество лет), но зато умеет готовить (имеет действие (метод/функцию) “приготовить ужин”)

2) [ООП] Объект “Собака”, у которой есть такие характеристики (поля), как цвет шерсти, возраст. И также она умеет бегать (имеет действие (метод/функцию) “бежать”)

3) [ФП] Процесс (функция) “Приготовление ужина”.


И, допустим, нам нужно приготовить ужин. Объект “Человек” умеет это делать сам по себе, так как у него есть такое действие, но также он может воспользоваться и процессом (функцией) “Приготовление ужина”, так как он доступен всем, но в таком случае результат уже может отличаться, так как процесс (функция) ориентирован на всех, а действие (метод/функция) только на этого конкретного человека. Хорошо, а что там с собакой? Так как у нее нет действия (метода/функции) “приготовить ужин”, следовательно, она сделать этого не может, но может воспользоваться общим процессом (функцией) “Приготовление ужина”. Хочу еще раз уточнить, что результат процесса будет зависеть от входных данных и как программист, написавший этот процесс (функцию), обрабатывает эти данные внутри. То есть, в итоге, сможет собака приготовить ужин или нет - решает программист.


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


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


Автор: Михаил Половов (inst:____x.y.z____)

Редактор: Екатерина Козьмина (inst: enci_ko)

Показать полностью 1
[моё] Ооп Фп Парадигма Длиннопост
12
Nopurpose
Nopurpose
5 лет назад

ОБЪЕКТНАЯ МОДЕЛЬ MICROSOFT DAO 3.6. Есть вопрос от чайника⁠⁠

В первые знакомлюсь с ООП. По заданию нужно создать таблицу в access в существующей БД (Студенты отличники).
Я примерно понимаю синтаксис, как должен выглядеть код, но мне непонятно, куда его нужно вносить, не подскажете?

Access Vba Ооп База данных Текст
12
3
mrKolt
mrKolt
5 лет назад

Стандартная первая пара на ООП (обьектно ориентированое програмирование)⁠⁠

Стандартная первая пара на ООП (обьектно ориентированое програмирование)
Картинки Программирование Ооп
5
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии