Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a...

19
Diagrama de Classes Conceitos Básicos prof. Robinson Vida ([email protected] ) 1 Monday, April 20, 15

Transcript of Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a...

Page 1: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Diagrama de ClassesConceitos Básicos

prof. Robinson Vida ([email protected])

1Monday, April 20, 15

Page 2: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Função do Diagrama de Classes

Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

representar o relacionamento, o complemento e a transmissão de informações entre as classes que compõe o sistema.

2Monday, April 20, 15

Page 3: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Acoplamento e Coesão

Acoplamento e Coesão são dois conceitos importantes no projeto das classes, componentes ou elementos que irão formar um software. !

3Monday, April 20, 15

Page 4: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Coesão! Coesão é o grau que indica se as responsabilidades de uma classe formam uma unidade de significado. Ou seja, uma alta coesão é obtida pela associação em um único componente de tarefas que se relacionam de alguma maneira.

4Monday, April 20, 15

Page 5: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Acoplamento ! Acoplamento, por outro lado, descreve as relações entre os componentes do software. De forma geral, é desejável reduzir a quantidade de acoplamento tanto quanto o possível. Conecções entre os componentes do software inibem a facilidade de desenvolvimento, modificação e reuso dos componentes. O acoplamento acontece quando um componente de software precisa acessar informações armazenadas em um outro componente.

5Monday, April 20, 15

Page 6: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Visibilidade ou Tipos de Acessoutilizada para indicar o nível de acessibilidade de um determinado atributo ou tipo de acesso.

Ela pode ser de 4 tipos, a saber:

privada ou private ( - )

protegida ou protected ( # )

publica ou public ( + )

pacote ou package ( ~)6Monday, April 20, 15

Page 7: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Visibilidade Privada ( - )

significa que apenas os objetos da classe detentora do atributo ou método poderão ter acesso de visualização ou utilização.

7Monday, April 20, 15

Page 8: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Visibilidade Protegida ( # )

determina que além dos objetos da classe detentora do atributo ou método, os objetos das subclasses também poderão acessar esse atributo ou método protegido.

8Monday, April 20, 15

Page 9: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Visibilidade Publica ( + )

Todo e qualquer objeto do sistema pode ter acesso ao atributo ou método declarado como público.

9Monday, April 20, 15

Page 10: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Visibilidade de Pacote ( ~)

poucas linguagens implementam.

Atributos e métodos declarados com a visibilidade de pacote ( ~) poderão ser acessados por qualquer objeto pertencente ao pacote que ele estiver inserido.

10Monday, April 20, 15

Page 11: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Estrutura

11Monday, April 20, 15

Page 12: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Exemplo

12Monday, April 20, 15

Page 13: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Exemplo

13Monday, April 20, 15

Page 14: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Do diagrama para o código C++

// arquivo NomedaClasse.h #pragma once class NomedaClasse { private: int attribute1; proteced: char attribute2; public: int getAttribute1(); void setAttribute1(int); char getAttribute2(); void setAttribute2(char); }

// arquivo NomedaClasse.cpp #include “NomedaClasse.h”

int NomedaClasse::getAttribute1(){} void NomedaClasse::setAtribute1(int v){} char NomedaClasse::getAttribute2(){} void NomedaClasse::setAttribute2(char v){}

14Monday, April 20, 15

Page 15: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Do diagrama para o código java

// arquivo NomedaClasse.java public class NomedaClasse { private int attribute1; proteced char attribute2; public int getAttribute1() {return 0;} public void setAttribute1(int v) {} public char getAttribute2() { return null;} public void setAttribute2 (char v) {} }

15Monday, April 20, 15

Page 16: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Instâncias de Classe - Java

package exemplointerface;

public class Main {

public static void main(String[] args) { Janela j = new Janela(); j.setVisible(true); }

}

16Monday, April 20, 15

Page 17: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Instâncias de Classe - C++#include <cstdlib>#include "NumeroComplexo.h"

using namespace std;

int main(int argc, char** argv) { NumeroComplexo a(9,8); // alocação estática de memória NumeroComplexo *b; // alocação dinamica de memória b = new NumeroComplexo(4,5);

a.print(); b->print();

delete b; // remoção da memoria alocada. return 0;}

17Monday, April 20, 15

Page 18: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Definição da Classe - C++#ifndef NUMEROCOMPLEXO_H#define! NUMEROCOMPLEXO_H

class NumeroComplexo {public: NumeroComplexo(); NumeroComplexo(int _x,int _y); int getReal(); int getImag(); void setReal(int _v); void setImag(int _v); void print(); virtual ~NumeroComplexo();private: int real; int imag;};

#endif! /* NUMEROCOMPLEXO_H */

18Monday, April 20, 15

Page 19: Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.

Definição da Classe - C++#include "NumeroComplexo.h"#include <stdio.h>

NumeroComplexo::NumeroComplexo() {}

NumeroComplexo::NumeroComplexo(int _x,int _y) { real = _x; imag = _y;}

NumeroComplexo::~NumeroComplexo() {}

int NumeroComplexo::getImag(){return imag;}int NumeroComplexo::getReal(){return real;}void NumeroComplexo::setImag(int _v){imag = _v;}void NumeroComplexo::setReal(int _v){real = _v;}void NumeroComplexo::print(){printf("%i + j(%i) \n", real, imag);}

19Monday, April 20, 15