Точка входа в программирование
20.1K subscribers
1.28K photos
226 videos
2 files
2.81K links
Фундаментальные знания по основам программирования

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/zrgj
Download Telegram
Простыми словами: Основные концепции ООП

Понять объектно-ориентированное программирование на старте изучения может быть сложно. Поэтому мы постараемся объяснить вам основные концепции максимально простым языком.

Для начала разберёмся с тем, что же такое объекты, а затем пройдёмся по основным концепциям — наследованию, абстракции, инкапсуляции и полиморфизму:

Классы и объекты

Класс — это своего рода чертёж или шаблон, по которому создаются объекты. Это как кулинарный рецепт, который описывает, какие ингредиенты (свойства) и шаги (методы) нужно использовать.

Объект — это конкретный экземпляр класса. Если класс — это рецепт, то объект — это готовое блюдо по этому рецепту.

class Кот:
def __init__(self, имя):
self.имя = имя

def мяукать(self):
print(f"{self.имя} говорит: Мяу!")

мой_кот = Кот("Мурзик")
мой_кот.мяукать()


1. Наследование

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

class Животное:
def дышать(self):
print("Дышу")

class Кот(Животное):
def мяукать(self):
print("Мяу!")

кот = Кот()
кот.дышать()
кот.мяукать()


2. Абстракция

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

3. Инкапсуляция

Инкапсуляция — скрытие внутренней реализации объекта от внешнего мира и предоставление доступа только через определённые методы. Это как секретный ингредиент у шеф-повара, который скрыт от всех, кроме него.

class Кот:
def __init__(self, имя):
self.__имя = имя # сокрыто (private)

def получить_имя(self):
return self.__имя

def мяукать(self):
print(f"{self.__имя} говорит: Мяу!")

кот = Кот("Мурзик")
print(кот.получить_имя())
кот.мяукать()


4. Полиморфизм

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

class Животное:
def издать_звук(self):
pass

class Кот(Животное):
def издать_звук(self):
print("Мяу!")

class Собака(Животное):
def издать_звук(self):
print("Гав!")

животные = [Кот(), Собака()]

for животное in животные:
животное.издать_звук()


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

Если вам понравился пост, поставьте ❤️ и мы обязательно расскажем о чём-то ещё.

#простымисловами #ооп
37👍3🎉2🫡1🆒1
Команда Tproger (это мы) ищет менеджера по продажам (это вы)

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

Отклик оставляйте тут: https://tprg.ru/l1rP

#вакансии #работа
8 советов работы с JavaScript, которые повысят ценность вашего кода

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

Об этих моментах в статье:

https://nuancesprog.ru/p/15712/

#советы #javascript
👍6
Как произносят С++ на разных уровнях

#кек
12😁1
Варианты ответ, как обычно, ниже.

#викторина #java
🥰4
Какой из следующих классов Java эффективно работает с изменяемыми строками и обеспечивает потокобезопасность?
Anonymous Quiz
13%
String
42%
StringBuilder
35%
StringBuffer
11%
CharSequence
Forwarded from Метод утёнка
Не существует не решаемых задач. Нужно только подобрать правильный способ решения. Ведь иногда нужно просто перевести дух и позволить себе отдохнуть, чтобы всё разрешилось как будто само собой.

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

#советы
8👍7🔥1
Как учить языки программирования и создавать базу знаний с помощью метода из прошлого века

Нашли для вас очень полезный метод обучение, как говорится, old but gold. Называется он Цеттелькастен и придумал его социолог ХХ века Никлас Луман. Суть его в правильной организации заметок.

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

https://habr.com/ru/companies/yadro/articles/835664/

#советы
🤓2
Базовый гайд по работе с командной строкой в Linux

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

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

#linux #macos #видео #гайд
Media is too big
VIEW IN TELEGRAM
2👍2
Как работает интернет: основы архитектуры веб-сетей

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

Здесь максимально кратко изложены основные концепции, чтобы не перегружать вашу голову:

https://nuancesprog.ru/p/16313/

#основы #интересное #интернет
🤓1
А вы как пишете?

#кек
🔥23😁10👍2
Простыми словами: Наследование в ООП

В прошлом посте мы рассказали про основные концепции ООП в общих чертах. Теперь давайте поговорим о них более конкретно и разберём первую — наследование.


Что такое наследование?

Наследование — это механизм, позволяющий одному классу наследовать свойства и методы другого класса. Это позволяет создавать новый функционал на базе существующего. У этого принципа есть два основных достоинства:

1. Повторное использование кода. Вместо того чтобы писать один и тот же код несколько раз, вы можете создать родительский класс с общей функциональностью и наследовать от него.
2. Упрощение структуры кода. Наследование помогает создать более упорядоченную структуру и улучшить читаемость кода.

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

# Родительский (суперкласс)
class Животное:
def __init__(self, имя, возраст):
self.имя = имя
self.возраст = возраст

def издать_звук(self):
raise NotImplementedError("Этот метод должен быть определён в подклассе")

def описание(self):
return f"{self.имя} — {self.возраст} лет"

# Дочерний класс Кот наследует от Животное
class Кот(Животное):
def издать_звук(self):
return "Мяу!"

# Дочерний класс Собака наследует от Животное
class Собака(Животное):
def издать_звук(self):
return "Гав!"

# Создаём объекты
кот = Кот("Мурзик", 3)
собака = Собака("Бобик", 5)

# Используем методы
print(кот.описание()) # Output: Мурзик — 3 лет
print(кот.издать_звук()) # Output: Мяу!
print(собака.описание()) # Output: Бобик — 5 лет
print(собака.издать_звук()) # Output: Гав!


Ключевые моменты в наследовании:

1. Конструктор родительского класса


Для инициализации объектов дочернего класса важно вызвать конструктор родительского класса. В Python это делается с помощью функции super().

class Животное:
def __init__(self, имя, возраст):
self.имя = имя
self.возраст = возраст

class Кот(Животное):
def __init__(self, имя, возраст, цвет):
super().__init__(имя, возраст)
self.цвет = цвет

кот = Кот("Пушок", 2, "серый")
print(кот.описание()) # Output: Пушок — 2 лет
print(кот.цвет) # Output: серый


2. Переопределение методов

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

class Животное:
def __init__(self, имя, возраст):
self.имя = имя
self.возраст = возраст

def издать_звук(self):
return "Звук животного"

class Кот(Животное):
def издать_звук(self):
return "Мяу!"

кот = Кот("Мурзик", 3)
print(кот.издать_звук()) # Output: Мяу!


3. Множественное наследование

Иногда подкласс может наследовать свойства и методы от нескольких родительских классов. Это полезно, но требует осторожности, чтобы избежать сложных зависимостей и конфликтов.

class Животное:
def дышать(self):
return "Дышу"

class Летать:
def летать(self):
return "Летаю"

class Птица(Животное, Летать):
def издать_звук(self):
return "Чирик"

птица = Птица()
print(птица.дышать()) # Output: Дышу
print(птица.летать()) # Output: Летаю
print(птица.издать_звук()) # Output: Чирик


Возможно, вы сейчас задаётесь вопросом где же это применяется на практике? Например, тут:

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

2. Системы управления пользователями. В системах управления пользователями можно использовать наследование для создания различных ролей с различными уровнями доступа.

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

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

#простымисловами #ооп
8