Paradigmas da Programação – Semestre 1 – Aula 5 Professor: Eduardo Mantovani (eduardo.mantovani@aes.edu.br)
UML: Diagrama de classe – Conceito / Finalidade O diagrama de classe UML é um dos artefatos disponíveis na linguagem, cujas finalidades principais são: Modelar a classe antes da implementação, tornando-se um gabarito para a escrita do código Documentar a classe, de modo a facilitar a integração entre diferentes classes, que podem ser escritas por diferentes programadores Deve ser escrito com respeito aos conceitos de coesão e de acordo com a abstração desejada para o problema Deve ser respeitado plenamente no momento da implementação do código Há uma relação direta entre o diagrama de classe e o código na linguagem O diagrama de classe é independente de linguagem de programação
UML: Diagrama de classe - Sintaxe A sintaxe completa prevê seções para o nome da classe, para seus atributos e para seus métodos Uma sintaxe simplificada pode apresentar apenas o nome da classe, com a intenção de dar apenas a visão global do sistema (o IDE BlueJ adota essa sintaxe simplificada) Classe atributos métodos
UML: Diagrama de classe – Nome da classe A seção dedicada a apresentar o nome da classe é a mais simples do diagrama Requer apenas a indicação do nome da classe, podendo ter apenas algumas variações devido a modificadores previstos na linguagem O nome da classe indicado no diagrama será aquele implementado no código
UML: Diagrama de classe – Atributos A seção de atributos do diagrama de classe UML segue a sintaxe <visibilidade> nome atributo<:tipo> A visibilidade pode ser: Exemplo: - salario:double Pode-se adotar uma forma simplificada, apresentando apenas o nome do atributo. Útil durante a fase de desenvolvimento da idéia, quando as preocupações não estão voltadas para os tipos, mas sim, para as funcionalidades da classe + pública - privada # protegida
UML: Diagrama de classe – Métodos A seção de métodos do diagrama de classe UML segue a sintaxe <visibilidade> nome método(<parâmetros>)<:tipo retorno> A visibilidade segue a mesma sintaxe dos atributos A forma simplificada pode ser adotada, apresentando apenas o nome do método Os parâmetros seguem a sintaxe: nome parâmetro<:tipo>, nome parâmetro<:tipo>, ... Exemplo: - ajustarSalario(novoSalario:double):void
UML: Diagrama de classe – Comentários Há sintaxe prevista na linguagem para a indicação de comentários sobre a classe Consiste, basicamente, na indicação por um retângulo com a “ponta dobrada” fora da classe e ligado a ela por uma linha sem seta Classe atributos métodos comentários
UML: Diagrama de classe – Correspondência com código Java A correspondência entre o diagrama de classe UML e a classe em linguagem Java é direta e simples Uma vez disponível o diagrama de classe, a codificação fica simplificada e pode ser feita sem a necessidade de esforço (exceto pela lógica dos métodos, que não é prevista no digrama de classe Exemplo: public class Pessoa { private String nome; private String rg; public Pessoa() { } public String obterNome(){ return nome; public void ajustarNome(String novoNome) { nome = novoNome; public String obterRg(){ return rg; public void ajustarRg(String novoRg) { rg = novoRg; Pessoa nome: String rg: String +Pessoa() +obterNome():String +ajustarNome(novoNome:String):void +obterRg():String +ajustarRg(novoRg:String):void
Exercícios Para os substantivos a seguir, defina classes, atributos, métodos construtor, acessores e modificadores para cada um deles: Pessoa, Funcionário, Veículo, CD, Livro, Casinha Utilize a sintaxe de diagrama de classe UML
UML: Relacionamento entre classes - Dependência Quando uma classe é referenciada por outra, há uma relação de dependência entre a classe que referencia e a classe referenciada Ter um atributo do tipo de uma classe, um parâmetro ou um retorno de método ou, simplesmente, utilizar uma variável da classe daquele tipo é uma referência. Forma-se então uma composição de classes. A linguagem UML prevê uma notação para isso, dentro do diagrama de classes Sintaxe: uma seta aberta com linha tracejada que sai da classe que faz a referência e vai até a classe que a referenciada Exemplo: Circle Canvas Casinha Square Triangle
UML: Estereótipos de classes Estereótipos são como uma segregação de classes pelas funções que exercem Nesse curso adotaremos 3 principais estereótipos: controle (control), entidade (entity) e fronteira (boundary) Estereótipo entidade: classes que representam substantivos existentes no problema real. Exemplos: Pessoa, Veículo, CD, Empréstimo (biblioteca), etc... Estereótipo controle: classes que são utilizadas para a manipulação de classes do estereótipo entidade. Exemplos: EstatísticaEmpréstimos, CálculoFolhaPagamento, ResumoAtividadesVeículos, etc... Estereótipo fronteira: classes usadas para formar a interface com o usuário (os formulários quando utilizado o ambiente gráfico). Exemplos: CadastroPessoas, CadastroVeículos, FormEmpréstimo, etc...
UML: Estereótipos de classes Sintaxe no diagrama de classes A linguagem UML prevê uma sintaxe específica para representarmos os estereótipos junto dos diagramas de classes Com o uso dos estereótipos, fica mais fácil entender a finalidade da classe no contexto do sistema <<controle>> Emprestimo <<entidade>> Livro <<fronteira>> FormEmprestimo <entidade>> Aluno <<entidade>> CD
UML: Notação para representação de objetos Muitas vezes é interessante apresentar objetos de uma ou mais classes em um diagrama para melhor entendimento do problema A linguagem UML prevê uma notação para isso, que se assemelha à notação de classe, com diferenças sutis Retângulo com duas seções: Descritor da instância e seção de atributos e respectivos valores A forma mais simplificada tem apenas o descritor da instância Descritor da instância. Sintaxe: nome da instância: Classe Atributos e valores. Sintaxe: atributo=valor ... Descritor da instância Atributos e valores
Exercícios Crie uma situação-problema onde você possa aplicar uma composição de classes e, se possível, indique os estereótipos das classes empregadas Descreva a situação-problema (suscintamente) Modele as classes que resolverão a situação