Начал изучать ООП. В частности на typescript. Повторял код по уроку с шахматами. Доделывать приходится самому и тут я понял что опыта прям совсем не хватает. Как бы вы порекомендовали попрактиковаться в ООП? Я конечно могу сам попытатся что-то писать, но не думаю что в этом будет какая-то архитектура внятная. Может какие-нибудь ресурсы, репозитории или уроки? Конкретно практические. Чтобы сразу пытаться понимать как организовывать объекты и связи между ними. Возможно стоит сначала что-то написать самому криво, а потом посмотреть как подобное реализуют другие.
Только опыт и практика.
Пиши как можно больше.
Со временем будешь понимать, что год назад ты писал плохо и можно переписать намного лучше с применением ООП и шаблонов проектирования, которые освоил.
Других советов нет.
Никаких курсов и уроков.
Мне кажется что JavaScript/TypeScript - это плохой старт для изучения ООП. Дело в том что JavaScript исполняющая среда изначально была разработана с слишком вольной интерпретацией объекта. Грубо говоря она настолько flexible что те строгие законы и правила которые навязывает ООП в JavaScript могут быть слишком легко нарушены.
Поэтому чтобы почувстоввать нужность ООП, как дисциплины. Я-бы предложил Java или C#. Это как в музыке. Нельзя начать сразу ипровизировать джаз на музыкальном инструменте в 5 лет. Надо пойти в музыкальную школу где преподаватели тебе поставят руку правильно. А потом уже после семилетки - муз-училища - консерватории - иди в импровизации. Или даже иди раньше. Но какая-то дисциплина должна быть. ООП - это дисциплина. Не волюнтаризм.
что те строгие законы и правила которые навязывает ООП
А можно подробней, какие строгие законы навязывает парадигма у которой даже нет строгой интерпретации и каждый интерпретирует эту шизу кто во что горазд, и чаще на основе карго культа, а не реального положения вещей?
Чтобы понимать о чем я: что джава, что жс это ООП языки, только первый статически классовый, второй - делегирующее прототипирование. И тем не менее, оба ООП. Не говоря уже о том, что чисто в теории, то что сегодня назыается ООП, это не ООП вовсе.
DollyPapper, знаете анекдот про Вовочку который "всю религию к х..м" свёл?
Давайте с простого. С инкапсуляции. Я надеюсь все понимают это свойство и ни у кого нет разных трактовок?
Вот сделайте мне демо инкапсуляции в JavaScript.
знаете анекдот про Вовочку который "всю религию к х..м" свёл?
к сожалению нет, а может к счастью :)
Давайте начнем с такого момента, после чего перейдем к вашей просьбе. Человек изучает JS + TS, в котором ООП несколько разнится от классических джав и сишарпов. Какой смысл ему изучать, иную реализацию, если он изучает конкретные технологии? Не вижу причин. Для общего развития разве что, но это потом, когда с текущей разберется, то можно и на другие технологии посмотреть, как оно там устроено. Теперь к вашему вопросу/просьбе:
Давайте с простого. С инкапсуляции.
прям простого? Одна из самых недооцениваемых и игнорируемых частей парадигмы, что говорит о том, что не всё на деле так просто.
Реализация, пожалуйста:
На классах
class Wallet {
constructor(balance) {
this.balance = balance;
}
withdraw(sum) {
if (this.balance - sum < 0) {
throw "Balance cant be less than 0";
}
this.balance = this.balance - sum;
}
}
Данные и методы объеденены в одном объекте, который полностью контролирует процесс снятия наличных - инкапсуляция.
Инкапсуляция на замыканиях:
function Wallet(balance) {
return {
withdraw: function (sum) {
if (balance - sum < 0) {
throw "Balance cant be less than 0";
}
balance -= sum;
},
showBalance: function () {
console.log(balance);
}
};
}
Вот вам 2 примера инкапсуляции в разных стилях, выбирайте на свой вкус :)