a programação orientada a objetos oferece uma maneira eficiente e organizada De desenvolver software permitindo a reutilização de código facilitando a manutenção e também a colaboração entre desenvolvedores e fornecendo uma abstração do mundo real tornando o desenvolvimento entendimento de código muito mais intuitivo no vídeo de hoje a gente vai continuar desenvolvendo o aprendizado em programação orientado a objetos nesse vídeo mais específico a gente vai falar sobre acoplamento Coesão e também relacionamento entre classes então se você não assistiu o primeiro vídeo onde a gente introduziu a programação orientada a objetos e alguns conceitos básicos pausa esse vídeo
aqui e o primeiro vídeo tá aqui no Card em cima vale lembrar também que po é apenas um dos vários fundamentos que a gente precisa ter para uma carreira sólida na tecnologia se você quer continuar expandindo seus conhecimentos em ti você precisa conhecer a ebac a escola Britânica de artes criativas e tecnologia que é a nossa patrocinadora do vídeo de hoje a ebac Ela conta com diversos cursos voltados pra programação incluindo ti do zero ao pro para você que quer seguindo na ti mas não sabe exatamente qual caminho seguir o curso Ele vai te possibilitar
ter uma base de programação e também conhecer um pouco das cinco profissões mais populares da tecnologia justamente para você experimentar e ver o que mais se encaixa Depois dessa escolha você passa de 8 a 12 meses se tornando um especialista na área que você escolheu durante essa etapa não basta apenas se tornar um especialista técnico Você ainda vai ter apoio para preparar pro mercado de trabalho envolvendo mentorias com gerente de RH ajuda com o seu P portfólio currículo e também análise do LinkedIn e a gente sabe que a barreira do mercado tá dificultando a vida
para iniciantes a ebac também pensou nisso e reuniu diversas vagas de empresas parceiras para te dar aquela forcinha o emprego é garantido ou ela te devolve todo o seu dinheiro então você só tem a ganhar para qualquer curso debac incluindo ti do zero ao pro vocês têm desconto de R 200 utilizando cupons Duda ebac também tem mais detalhes aqui na descrição do vídeo são mais de 150 cursos para você conhecer e agora recados dados bora começar o nosso vídeo de hoje vamos começar falando de dois conceitos bastante importantes quando a gente fala de relacionamento de
classes o acoplamento e a coesão o acoplamento ele se refere ao grau de interdependência entre duas ou mais classes em um sistema de software quanto maior o acoplamento entre classes mais elas estão interligadas e dependentes uma da outra quando a gente tem um software muito acoplado o sistema ele se torna de difícil compreensão e testar e manter ele pode causar vários problemas isso porque mudanças em uma classe podem exigir mudanças em outras classes que são interligadas por outro lado um baixo acoplamento significa que as classes estão pouco interligadas e também tem menos dependências entre si
isso é o melhor dos casos porque promove uma reutilização de código facilita a manutenção e também torna o sistema mais flexível e adaptável a mudanças já a coesão ela se refere ao grau em que os elementos dentro de uma classe estão relacionados e eles trabalham juntos para alcançar um objetivo com comum quando a gente fala que uma classe ela possui uma alta coesão a gente tá dizendo que essa classe ela tem membros que estão intimamente relacionados e colaboram para realizar uma única tarefa ou função isso também resulta em um código mais fácil de ler e
também mais fácil de manter por outro lado quando a gente fala de uma classe com baixa coesão a gente pode ter membros que realizam tarefas distintas e que não são relacionadas entre si isso muitas vezes pode levar uma classe confusa e difícil de entender e também pode indicar a violação do princípio da responsabilidade única onde uma classe deve ter apenas uma razão para mudar e quando a gente fala de design de software o grande objetivo é buscar esse equilíbrio entre a coesão e o acoplamento Isso significa que a gente tem que tentar minimizar o acoplamento
entre classes tornando o sistema mais flexível e adaptável a mudanças enquanto maximiza a coesão entre as classes garantindo que cada classe tenha uma única responsabilidade Clara e bem definida entendido esses dois conceitos agora Bora entrar no conceito de relacionamento entre classes na programação orientada a objetos o relacionamento entre classes em po referem-se às maneiras pelas quais as classes podem se conectar e interagir umas com as outras com esses relacionamentos a gente pode modelar sistemas complexos de software e estabelecer a estrutura e o comportamento do mesmo e aí a gente tem quatro relacionamentos principais que a
gente vai falar no vídeo de hoje a associação agregação comp posição e também dependência começando com Associação ela nada mais é que um relacionamento geral entre os objetos indicando que um objeto está relacionado de alguma forma com o outro essa relação ela pode tanto ser fraca quanto forte dependendo da natureza entre o relacionamento dos objetos aqui nesse exemplo a gente tem uma classe livro e ela pode ser associada a uma classe autor então indicando né que o livro foi escrito por um autor específico então aqui a gente tem a classe autor a gente inicializa ali
então a associação nesse caso específico ela ocorre quando a gente cria um objeto da classe livro Então reparem a gente tem a classe autor ela tem uma inicialização ali apenas com o nome depois a gente tem a classe livro E aí na inicialização ali É ali que ocorre a associação então quando a gente cria esse objeto da classe livro A gente passa um objeto da classe autor como um dos seus atributos significa que cada livro vai ter uma associação Direta com um autor Então nesse método de inicialização ali da classe livro O unit allies ele
espera receber dois parâmetros o título e o autor então o parâmetro autor ele vem lá da classe autor E aí a gente tem que quando o objeto da classe livre ele é instanciado é necessário passar também um objeto da classe autor como argumento para estabelecer essa Associação então basicamente isso que significa que cada livro tem uma relação Direta com o autor já que cada Instância na classe livro possui um atributo autor que aponta para um objeto da classe autor nosso segundo relacionamento do vídeo de hoje é o de agregação a agregação é o tipo especial
de associação que indica que um objeto tem ou é composto de outros objetos no entanto os objetos Associados eles podem existir independentemente do objeto principal aqui a gente tem um sistema de escola a gente tem uma classe turma que pode ter uma agregação com uma classe aluno isso basicamente indica pra gente que uma turma pode ser composta por vários alunos e dessa dessa forma os alunos eles podem existir independente da turma existir Então nesse exemplo aqui a classe turma ela possui uma lista de alunos e quando a gente instancia um objeto da classe turma essa
lista de alunos ela é inicializada como um arrei vazio aí a gente tem um método que chama adicionar aluno que tá na classe turma e ela permite adicionar novos alunos a essa lista nesse caso aqui a agregação ela ocorre quando uma classe que no nosso caso aqui vai ser turma ela possui uma coleção de objetos de outra classe que no caso aqui o nosso é o aluno então cada turma ela contém uma lista de objetos aluno Mas como eu disse os objetos aluno eles podem existir independentemente de existir a turma ou seja a nível de
código Isso significa que a gente pode excluir a turma que os objetos alunos não serão excluídos Isso é o que diferencia a agregação da composição e a composição é o nosso terceiro relacionamento que a gente vai ver no vídeo de hoje e como eu já Adiantei a composição é uma forma mais forte de agregação onde um objeto ele é dono de outros objetos e a sua existência Ela depende dos outros objetos também existirem em outras palavras os objetos que estão associados ao objeto principal também vão ser excluídos caso o principal seja ind indo mais uma
vez pro exemplo aqui a gente tem um sistema de carro então a gente tem aqui uma classe carro que ela pode ter uma composição com a classe motor nesse caso indicando que o carro tem motor E aí nesse exemplo o motor ele é uma parte essencial do carro não dá para existir um carro sem motor Então nesse exemplo em questão a classe carro ela é composta por um objeto da classe motor então quando esse objeto da classe carro ele é instanciado um objeto da classe motor também é automaticamente instanciado Isso tudo acontece ali dentro do
Construtor initialize da classe carro de inicialização da classe carro então isso significa que a existência de um objeto carro está intimamente ligada a existência do objeto motor se a gente destrói o objeto carro automaticamente o objeto motor tamb também é destruído Então essa é a principal característica da composição um objeto ele meio que possui outros objetos que são essenciais pro seu funcionamento e portanto eles são criados e destruídos juntos com ele e por último para fechar os nossos relacionamentos do vídeo de hoje o quarto relacionamento é o de dependência a dependência Como o próprio nome
diz indica que uma classe Ela depende de outra para funcionar de forma correta então isso significa que Qualquer mudança feita em uma classe pode afetar outra também então bora para um exemplo exemplo de novo aqui a gente tem uma classe cliente e ele precisa usar a classe banco para realizar transações bancárias então a classe cliente ela possui uma dependência com a classe banco nesse caso a gente tá falando que se a gente mudar a implementação da classe banco isso também pode afetar o funcionamento da classe cliente e no exemplo aqui a classe cliente então ela
depende da classe banco para realizar as transações no método initialize ali de inicialização da classe cliente a gente passa uma Instância da classe banco como argumento Então essa Instância ela é armazenada como um atributo que a gente pode ver Aler com @ banco na classe cliente a dependência nesse caso ela ocorre quando uma classe que no nosso caso aqui é a classe cliente Ela utiliza ou precisa de outra classe no caso a classe banco para realizar as suas operações mas essa outra classe ela não é parte essencial da primeira então o cliente ele não é
Tecnicamente essencial pra classe banco Nesse caso a classe cliente ela pode existir independentemente se o banco existir mas precisa dela para realizar certas operações em resumo os relacionamentos entre classes permite com que as classes se conectem e interajam de diversas maneiras estabelecendo a estrutura e também o comportamento do sistema quando a gente compreende Quando utilizar cada um dos relacionamentos a gente consegue criar sistemas muito mais modulares flexíveis e também de fácil manutenção como sempre se ficou alguma dúvida nesse vídeo aqui deixa nos comentários que eu te ajudo e a gente se vê num próximo vídeo
um beijo [Música] jaa a [Música]