olá meu nome é douglas e hoje eu vou ensinar sobre a grama de classes o iml vamos começar com algumas características básicas em seguida falaremos sobre relacionamentos encerramos com alguns exemplos muito bem vamos falar um pouco sobre algumas das características básicas dos diagramas de classes para ajudar a explicar essas características vou criar um exemplo digamos que estamos desenvolvendo um sistema para um zoológico ea propósito os exemplos que usarei provavelmente nunca fariam parte de um programa de verdade mas eles facilitam a compreensão dos conceitos muito bem vamos descrever as coisas que podem ser encontrados no sistema
do zoológico representamos essas coisas por classes e uma classe retratada com esta forma que então o que há em zoológico bem a muitos animais portanto teremos uma classe para os nossos animais para isso basta escrever o nome da classe nesta parte acima se a nossa classe chama-se animal uma instância dessa classe em seria um animal específico agora pergunta é como você identificar ea cada instância dessa classe isso é feito por meio de atributos um atributo é um pedaço significativo de dados que contém valores que descrevem cada instância dessa classe também são conhecidos como campos variáveis
ou propriedades estão posicionados nesta parte intermediária aqui para nossa classe animal podemos criar atributos como nome número de identificação e idade desta forma identificamos uma instância específica da classe animal como ruthin número de identificação 304 idades entre 14 no entanto esses dados precisam ser formatados de uma determinada maneira comece com a visibilidade ao abordaremos posteriormente em nome do tributo que deve começar com uma letra minúscula este nome é seguido por dois pontos e o tipo de dados para o nome precisamos retornar uma cadeia de caracteres e podendo ser matar os outros atributos da mesma forma
porém é necessário retornar o número inteiro pois estamos tratando de números agora que temos alguns atributos para nossa classe irmão veja arte abaixo aqui você coloca os métodos também conhecidas como operações ou funções métodos permitem especificar as características comportamentais de uma classe quais alguns comportamentos diferentes dessa classe animal talvez gostaríamos mudar os nomes dos nossos animais por exemplo alterar roth para rita sendo assim vamos criar uma função chamada definir nome também podemos criar um método para comer uma vez que todos nossos animais se alimentam os métodos também precisa ser formatados de uma determinada maneira comece
com visibilidade sobre a qual falaremos em seguida então o método que começa com uma letra minúscula insira parênteses para indicar a função que você programar a posteriormente você também pode adicionar as variáveis e os tipos de dados aqui no entanto não é necessário na maioria dos casos adicionaremos visibilidade e parêntese para o método de comer também agora falaremos sobre visibilidade a visibilidade de um atributo o método definir a acessibilidade para esse atributo o método neste momento há um sinal de menos em todos o que significa que cada um desses atributos e métodos estão privados eles
não podem ser acessados por qualquer outra classe ou subclasse o sinal de mais é o oposto significando que um atributo método está público e pode ser acessado por qualquer outra classe o jogo da velha representa outro tipo de visibilidade indicando que um atributo o método está protegido estes podem ser acessados somente pela mesma classe ou suas sub 14 o fim ao tio ele define a visibilidade em pacote o padrão o que significa que pode ser usado por qualquer outra classe contando que esteja no mesmo pacote porém raramente usado na maioria dos casos seus atributos serão
privados ou protegidos e os métodos geralmente são públicos vamos usar outro exemplo para rapidamente conferir esses princípios criaremos uma classe para funcionário vamos acionar atributos a classe como nome número do funcionário número de telefone e departamento todos esses atributos devem estar privados em seguida vamos criar um método simples como atualizar o número de telefone que definiremos como público você deve ter percebido que estou usando um programa de diagramação para criar esses diagramas de classe ml aplicam-se os mesmos conceitos a usar papel caneta mas com o programa de diagramação é muito mais fácil a ferramenta que
estou usando hoje se chama lucchetti você pode criar uma conta gratuita clicando no link da inscrição e só precisa de um endereço de email para fazer isso e assim você vai poder acompanhar todo o processo de criação de a gama de classes que estamos fazendo hoje o próximo tema será abordado são os diferentes tipos de relacionamentos que existem entre as classes o primeiro tipo de relacionamento que descrevemos é a herança continuarei usando o exemplo do zoológico porque facilita a compreensão das lógicas desses relacionamentos mas usaremos um exemplo mais técnico real depois bom vamos falar de
herança digamos que os únicos animais que temos em nosso lógico são tartarugas lontras e o pouco conhecido porém igualmente incrível lembre em nosso sistema distinguimos cada um deles com sua própria classe sendo assim que os três novas classes tartaruga lontra e lembre mas agora em vez de duplicar os atributos de nome e número de identificação idade podemos transformar essas classes em subclasses da classe animal desenhando certas abertas assim este é um relacionamento de herança dessa maneira nós comunicamos que essas subclasses eram todos os atributos e métodos da superclasse você também pode usar os termos classe
secundária o clássico primário bem a nossa classe londra herdará os atributos de nome idade e número de identificação em seguida podemos adicionar um tributo específico a outra como o comprimento de seu bigode uma das vantagens da herança que se quiséssemos alterar ou adicionar um atributo para todos os animais não teríamos que fazer essa mudança para a tartaruga e depois para londrina e por fim para o lêmure fazemos a mudança somente na classe animal e ela aplica-se a todas às subclasses nesse cenário falaremos o que chamamos de abstração animal é uma classe abstrata porém nosso sistema
sempre que quisermos instanciar uma das nossas classes será uma tartaruga outra o lêmure não queremos instanciar a classe animal em si a classe animal é apenas uma maneira de simplificar as coisas e manter o código simples para evitar repetições portanto para mostrar que essa é uma classe abstrata colocaremos no metálico você pode colocar o nome da classe entre esses símbolos também mas eu prefiro em itálico outro tipo de relacionamento é a associação se tivéssemos uma classe chamada ouriço-do-mar poderíamos fazer uma associação que apresentado por uma linha simples entre londrina e ouriço do mar poderíamos dizer
que outra como o ouriço do mar não há nenhuma dependência entre eles é apenas um relacionamento de associação básico e bastante simples mas o tipo de relacionamento é a agregação é um tipo especial de associação que especificam todo e suas partes continuando com o nosso exemplo do zoológico mais uma vez esse exemplo só para ajudar a explicar a lógica vamos criar uma nova classe para um grupo de tartarugas um grupo de tartarugas chama-se fardo legal né então veja nossa classe fardo que tem um relacionamento com tartaruga qualquer uma das tartarugas do nosso zoológico poderá fazer
parte de um fado mas não é necessário uma tartaruga pode deixar o fardo qualquer momento e ainda existe por conta própria esse tipo de relacionamento onde uma parte pode existir fora do todo chama-se agregação e é representado por um losango vazio há também o relacionamento da parte não consegue resistir fora do todo chamado composição para ilustrar isso vou criar algumas classes novas digamos que temos vários centros de visitantes em nosso lógico e cada um desses centros em um saguão e um banheiro mas agora se um de nossos centros de visitantes fosse demolido o sagüi o
banheiro também seriam destruídos essas salas não existiriam fora do centro de visitantes do qual fazem parte isso chama-se composição e ocorre quando um objeto secundário não consegue resistir sem seu objeto primário representamos um relacionamento de composição com losango preenchido outro conceito importante é tratar de relacionamentos em diagramas de classe ml é a multiplicidade a multiplicidade permite definir restrições numéricas e seus relacionamentos por exemplo digamos que queremos especificar que nossos centros de visitantes terão apenas um saguão simplesmente escrevemos o número um aqui o que significa que poderá haver somente um único saguão para cada centro de
visitantes no entanto referente aos banheiros talvez queremos fazer com que haja pelo menos um banheiro por cento de visitantes mas deixar o número máximo em aberto podendo existir a quantidade de banheiros que você quiser utilizamos esta notação para representar um ou muitos banheiros outros tipos de multiplicidade são zero a 1 que é uma instância opcional n que representa um montante específico foi número 1 nosso exemplo anterior mas poderia ser qualquer outro número dependendo do seu caso de uso 0 há muitos com a vários ou um intervalo específico de números espero que nossos exemplos disso lógico
tem ajudado a explicar esse com mas agora gostaria de mostrar um exemplo verdadeiro este é um diagrama de classes 1 ml para um carrinho de compras online se você quiser dar uma olhada neste diagrama comigo clique no link da inscrição para acessar o diagrama observe que esse sistema tem várias classes e relacionamentos dos quais explicaremos alguns vamos começar com a classe de usuário ela tem atributos de de usuário senha status de log e data de registro desde os diferentes tipos de retorno à direita e à visibilidade à esquerda que está definida como privada observe como
os valores e tornados por esses atributos descrevem especificamente uma instância da classe de usuário abaixo confira o método público de verificação de login retornando um goiano isso faz sentido concorda métodos são comportamentos de uma classe sendo assim ao fazer login na sua conta de usuário a uma função que verifica as suas credenciais de login agora vamos falar da classe de clientes nesta seta nos diz que o cliente secundário do usuário portanto o cliente era todos os atributos e métodos da classe de usuário o mesmo vale para a classe de administrador ambos eram do usuário mas
também possuem seus próprios atributos métodos específicos por exemplo o administrador pode atualizar o catálogo mas o cliente não a partir do cliente existem várias linhas com losango preenchido lembre se estes são relacionamentos decomposição que significa que as partes não podem existir sem o todo em uma estância de classe de clientes da conta do cliente foi destruída seu carrinho de compras também será destruído assim como seus pedidos eles não conseguem existir fora do cliente o mesmo vale para informações de remessa e detalhes de pedidos se não há um pedido não haverá detalhes do pedido ou informações
de remessa último tema a abordar neste exemplo é a multiplicidade observe que o cliente pode ter zero ou muitos pedidos faz sentido não é você pode criar uma conta de cliente uma loja online no entanto nunca chegaram a efetuar uma compra ou você pode ser freguês e fazer diversos pedidos e por outro lado o pedido pode pertencer somente a um cliente seria um pouco confuso se o pedido específico com uma idéia de pedido exclusivo fosse duplicado em vários clientes diferentes e aqui você pode ver um relacionamento 1 a 1 cada pedido tem um único detalhe
de pedido e os detalhes de pedidos pertencem a um único pedido obrigado por assistir tutorial sobre a grama de classe m inscreva se no nosso canal para ver mais tutoriais como esse e deixe seu comentário faça uma pergunta sugestão e por fim clique no link da inscrição para criar sua conta gratuita do lucchetti e começar a criar de gama de classes você mesmo [Música]