Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson...

19
Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ([email protected] ) 1 Friday, February 8, 2013

Transcript of Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson...

Page 1: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

Diagrama de ClassesSemana 4 - IF62C

prof. Robinson Vida ([email protected])

1Friday, February 8, 2013

Page 2: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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.

2Friday, February 8, 2013

Page 3: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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. !

3Friday, February 8, 2013

Page 4: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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.

4Friday, February 8, 2013

Page 5: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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.

5Friday, February 8, 2013

Page 6: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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 ( ~)6Friday, February 8, 2013

Page 7: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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.

7Friday, February 8, 2013

Page 8: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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.

8Friday, February 8, 2013

Page 9: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

Visibilidade Publica ( + )

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

9Friday, February 8, 2013

Page 10: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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.

10Friday, February 8, 2013

Page 11: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

Estrutura

11Friday, February 8, 2013

Page 12: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

Exemplo

12Friday, February 8, 2013

Page 13: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

Exemplo

13Friday, February 8, 2013

Page 14: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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){}

14Friday, February 8, 2013

Page 15: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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) {} }

15Friday, February 8, 2013

Page 16: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

Instâncias de Classe - Java

package exemplointerface;

public class Main {

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

}

16Friday, February 8, 2013

Page 17: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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;}

17Friday, February 8, 2013

Page 18: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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 */

18Friday, February 8, 2013

Page 19: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1

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);}

19Friday, February 8, 2013