Orientação a objetos com Roberta Arcoverde | #HipstersPontoTube

62.36k views2637 WordsCopy TextShare
Alura
Você acredita que orientação a objetos muda a forma de programar? 🤨 Neste #HipstersPontoTube o hos...
Video Transcript:
o Corinthians são objetos e [Música] Olá eu sou Paulo Silveira tô aqui com a Roberta Arcoverde tudo bem Roberta tudo bom fala e acho que esse também o assunto que aqui no Canadá Lula aparece com frequência e tem muita discussão tem discussão de boa prática dentro do que tá certo o que que tá errado e tem gente falando que acho que não precisa tudo isso é melhor ali para funcionar o etc mas eu queria entender então por que que as pessoas começaram a programar orientado a objeto que era o problema que tinha no código antes
que essa tal de orientação objeto vem resolver vários problemas no código antes a gente tá falando aqui de paradigmas de programação é uma forma de estruturar seu código suas aplicações que obedece a determinadas regras e antes de orientação objeto também existirá paradigmas de programação como interativo ou gente tinha os programas estruturados em ser que eram sequenciais né cujas instruções elas obedeceram a ordem e você tem também paradigma funcional É muita gente hoje em dia continua utilizando na verdade se popularizou nos últimos dez e quinze anos mas é uma paradinha Bem antigo lá dos anos 60
70 já se falava em programação funcional programas orientação aumentada objeto surgiu a com pessoal que trabalhava com a linguagem chamada esmalte toque que não pegou mas que foi Possivelmente a primeira linguagem de fato puramente alentado objeto que considerava tudo é um objeto e que portanto você consegue tratar qualquer estrutura dentro da sua aplicação como objeto né Eu aprendi a programar com orientação direto minha primeira linguagem foi Java Então para mim é um cara de muito faz muito sentido que é uma forma que você escolhe modelar ou criar Abstrações para os dados e comportamentos que irão
seu programa Vai executar então em orientação objeto existe essa coisa de que qualquer conjunto de qualquer dado ou qualquer coisa que você queria mandar é um objeto e se você quiser fazer alterações nesse se você quiser criar novas estruturas a partir dele você faz isso a partir de mensagens né de métodos que esse objeto Então vai executar é um pouco abstrato falando assim mas é uma forma de escrever Abstrações mesmo né é parte do que é o paradigma aqui a descrição desse seja um pouco mais abstrata Mas algumas das grandes vantagens que orientação a objetos
atrás diante das coisas que existiam na época é a facilidade que você tem por exemplo de esconder coisas que você não quer que Vagem né porque eles chamavam do princípio the information aiding e você faz isso com controle de acesso nos seus dados e você faz isso também fazendo com que os dados de um objeto estejam protegidos de influências externas se você quer modificar os dados de objetos Você só faz isso a partir de mensagens que você manda para esse próprio objeto que a gente chama de métodos ou eventos e para que esse objeto esteja
responsável por se atualizar e não sistemas externos como era o caso quando você tinha os esquemas de quadrados é né variáveis estáticas umas coisas tá todo mundo pode meter a mão tecido Global Global E aí é mais difícil por exemplo de antecipar efeitos colaterais de uma mudança mais difícil saber se me dado que você precisa ler foi alterado ou não quem alterou tudo isso com orientação a objetos fica um pouco mais simples porque você tem essa coisa de encapsulamento e permite que essa alteração de dados fique contida à uma estrutura só e as estrutura no
caso seria o objeto Então esse raizinha é esse esconder é o tal do encapsulamento também né Tá ligado isso da gente fechar deixar tudo fechadinho porque a gente não quer que as pessoas fiquem colocando o dedo em todas as variáveis porque tem um problema de efeito colateral e tem até o porão que a pessoa é muita coisa para saber né a pouco a variável que eu tenho que mexer para alterar este comportamento e tem variável em todo lugar tem mora em que lugar é que nem antigamente algumas linguagens que você podia mexer em qualquer lugar
da memória daquele problema às vezes até fora do seu programa o programa E aí fica todo mundo colocando a mão em tudo que canto quente mexe fazia sentido quando os times de desenvolvimento era uma pessoa e aquela pessoa era dona da memória inteira era dona do código inteiro ela sabe o que tá o código né ela sabe onde tá sabe o que que tá na memória em teoria é que depois até se provou que ia até vocês sozinho você é capaz de ir complicar seu código não é mas eu acho que a partir do momento
que passa para o time ter duas pessoas Enem hoje em dia é até raro ter só duas pessoas é a gente precisa esconder falando aqui você não não é que você não mexe aí você não precisa mexer não se preocupa né Melhor do que não mexa não se preocupe não eu acho que a grande vantagem também é que torna difícil de fazer a coisa errada né não a gente não pode dizer que todo o sistema aqui não é orientado a objeto O que é estruturado o que usa outros paradigmas é necessariamente mau feito necessariamente difícil
de mão e existem sistemas estruturados muito bem organizados né num dia tudo todos os módulos estão organizados de uma forma fácil de encontrar de achar gente vi muito isso por exemplo para quem gosta de ver código-fonte de sistemas antigos da Nasa né são sistemas são muito organizados embora não sejam orientados objeto porém como orientação direta e mais difícil o programa da fazer algo errado né fazer um acesso indevido claro que se o programa for também bem estruturado que dá para fazer um monte de coisa esquisita mesmo usando a linguagem orientada a objeto também mas é
mais difícil de fazer esses acessos você tava falando né mais difícil de mexer e de provocar efeitos colaterais variáveis globais porque o paradigma te dar um monte de ferramentas para evitar que isso aconteça Roberto encapsulamento está muito ligado com a gente deixa a visibilidade escondida das propriedades atributos Campo depende do nome da linguagem né da da linguagem que a gente usa e que tá com aquela palavra chave que é o privado hein e também vai mudar a partir do momento que a gente deixa um atributo privado é de fora daquela classe daquele objeto daquele bicho
a gente não pode mexer diretamente na verdade a gente não sabe nem que existe né gente não tem nem a visibilidade a gente não consegue nem nem ler e nem saber que existe a normalmente e é interessante foi quando a gente aprende a gente fala porque eu vou que isso vou bloquear as pessoas não quero que tu mudasse tudo que vai mais rápido vai lá na variável e Eu sempre gosto dessas metáforas Aí eu falo aqui nem o capô do carro né você não quer pegar o capô do carro lá e pegar o motor e
ficar enfiando mão e puxando o fiozinho para fazer passar mais gasolina porque é muito complexo funcionamento do motor de um carro é muito complexo o como funciona um objeto pode ser complexo mas é melhor do que isso né a gente não quer saber como funciona acho que isso hein Erick da o estalo na intenção objeto não é só que você não quer que a pessoa mexa é que você é realmente não se preocupe Olha o carro o carro você só manda uma mensagem acelera manda uma mensagem a ser invoca o método se ele vai acelerar
se aquele motor é a gasolina é álcool ele é elétrico a pessoa que tá usando o carro na verdade você não precisa reaprender a dirigir quando você vai usar um carro elétrico como que se acelera e Breca é igual é o mesmo mecanismo a mesma interface vem até essa palavra né no sentido conceitual é a mesma interface de comunicação que eu tenho um carro a combustão eu tenho com um carro elétrico ou deveria ser né porque apareceu momento você colocar mais um pedal e colocar dois volantes aí a coisa complica né se muda a interface
lá porque a gente tem óleo de controle remoto não é que você tem um controle remoto de uma TV aí pegou se for uma pera aí agora tenho 15 botões novos tem medo carro não é uma coisa que a gente sabe né o teclado também do computador tem lá aquelas teclas lá todo mundo é igual o deveria ser não é eu vou dentro da abstração correta né de colocar de estruturar sua os objetos com a distração que faz sentido para que as outras partes da aplicação não precisa entender como funciona o motor nela só precisa
dizer o acelera o freio de acordo com as necessidades dela e às vezes você não quer quebrar esse encapsulamento e não apenas porque você não quer for para que outras pessoas façam alguma besteira né colocando alterando uma variável da qual você depende né mas isso te dar mais autonomia também para alterar esse objeto né E aí a gente fala que princípio de aberto fechado de responsabilidade única aquela coisa do sólidos que é que vem depois né agora então são objetos Mas você consegue alterar o seu motor sempre os clientes do seu motor precisa se preocupar
porque as únicas coisas que vocês põe são as suas interfaces públicas né E aí você consegue se você tem um metro celular aqui não recebe um parâmetro pouco importa para quem chama esse método se você tá usando três variáveis locais um vulpix chamando outra classe está completamente isolado o funcionamento desse método é completamente isolados o cliente e aí você consegue alterar este comportamento sem se preocupar em quebrar esses clientes de além do encapsulamento dessa parte do privado é outra funcionalidade que comum é a calda as interfaces e tipos né que até se confundem em algumas
linguagens é o que que é isso porque que a gente faz essa tipagem interface e as classes e os objetos tipos é algo que realmente é Além de a orientação projeto né com a gente fala de tipagem por exemplo em igual a gente funcionários você também tem tipagem e linguagens orientações orientar os objetos muitas vezes você tem a fitagem fraca né entendeu é algo ortogonal Mas a questão das interfaces aí ela se exatamente essa função de isolar né de fazer com que você não precise se preocupar com detalhes de implementação quando você tá sendo um
cliente daquela classe ou daquele objeto que por acaso implementa uma interface e aí você consegue trocar a Estância Real que em tempo de execução o CEASA ali que implementa também aquela interface simples clientes precisem ser alterados Então esse isolamento permite que você evite por exemplo situações em que alterando o comportamento de uma classe que implementa a interface você precisa alterar todos os lugares não dessa interface a chamada não sei consegue fazer um isolamento melhor dos módulos da sua aplicação gosto muito bom esse sinal de que quando a gente está tendo que mudar em tudo que
é lugar de polícia sabe que você faz uma alteração fazer uma cirurgia um pequeno movimento ali numa classe e não trecho de código mas falar fiz aqui agora o solteirão ideias outros lugares né esse é um sinal forte de acoplamento altíssimo e de que as coisas não estavam encapsuladas como deveria ou como poderiam eu acho que esse é o pessoal chama de Ismael né tá até um tem um cheiro estranho esse esse código porque olha toda vez que se Affair aqui tem outra ali toda vez que eu ter aqui tem que alterar em 10 lugares
em outro aqui Cup Cola essa trechinho porque tem colocar isso mesmo enfim em vários lugares um sinal forte de que as coisas não foram escondidas de que algo não está bem interfaceado algo não está bem encapsulado e é um Ismael clássico cima do espalhamento né quando você tem até o nome para isso que você falou para exatamente fiz comportamento quando você precisa alterar um alguma coisa aí em função desta alteração se eu preciso fazer alterações em vários outros lugares aparentemente longe até de onde você tá mudando o nome disso é chato dando certo nessa cirurgia
de bazuca porque você precisa dar um uma cirurgia aqui né uma alteração pequena aqui não vai resolver seu problema você precisa fazer lá em diversos outros lugares fazer de forma muito mais espalhada isso pagamento junto com entrelaçamento que é o contrário como você tem pouca coesão são dois dos meus clássicos da parte de engenharia sofrem empírica que é estudado na academia mesmo a década já Como chama o outro entrelaçamento não tem de pagamento que quando você tem lógica espalhado em vários módulos e entrosamento que quando você tem em diferentes dentro do mesmo modo seja mais
uma responsabilidade da seria mais Exatamente é o famoso princípio da responsabilidade única quando ele é violado não é quando você tem diversas responsabilidades E aí a classe acaba tendo vários motivos para ser alterado que também é o esmalte agora que você citou o sólido e como uma das referências não é que inclusive tem um livro tem os princípios a gente tem vídeo aqui vou deixar os vídeos do canal da lua que a gente tem de Solid e tem alguma outra referência não e seriamente de livro mais de a interface encapsulamento que outras boas práticas que
a gente pode estudar Olha a referência sobre orientação a objeto especificamente a que eu mais gosto e você talvez vai rir é assim fundamentos de orientação do Jackson ml que é um livro dos anos 90 numa sacola não lembro agora não falo médio fundamentals of object-oriented software e o ML precisa antes a discutir as práticas né mas eu para mim a melhor referência para explicar de Fato né para quem não tem intimidade com conceitos de orientação a objeto porque funciona como funciona e como surgiu também coisas depois disso Depois dessa obra desse livro pós Solid
Red digamos assim mais recentes eu indicarei o material da loira sentiment olha só esse sim é Roberto eu falo treinar melhor os convidados aqui em qualquer livro do Maurício rito Maurício lixo é um autor brasileiro que escreve há bastante tempo sobre bastante coisa e o livro dele de sódio também um excelente referência Pois é espero ele era para ele estar aqui mas com ele mora na Holanda hoje em dia mas mandei foto do estúdio e sistemas eu quero gravar aí quero gravar aí na vida tem que trazer eu quero que você deixe só referência de
orientação projeto só Dúvida porque que você ainda não está convencido não está convencida de que orientação objeto realmente vai mudar a forma esse programa porque no começo é muito comum a gente viu lá algumas regrinhas sabe o pessoal fala ah faz assim acho que aqui o que pode uma variável Block pode ser Público aqui pode se estático aqui não precisa de interface é muito comum e isso nesses momentos não está deixando bastante diferença apresentação objeto é um assunto que até quando eu programável gostava muito de debater e apontar e criticar e discutir e tenho certeza
que você também gosta Obrigado pelo like Não deixe de assinar o canal da loira que tem muito conteúdo de tecnologia essa discussão de designer de código até mais é E aí E aí E aí [Música]
Copyright © 2024. Made with ♥ in London by YTScribe.com