domingo, novembro 21

Análise e Projeto Orientado a Objetos - Parte 2

Diagrama de pacotes
Representa um agrupamento das classes e interfaces, pode demonstrar a decomposição do sistema em sub-sistemas ou camadas.



Diagrama de objetos
Fornece uma visão do sistema em determinado momento, descrevendo o estado e relações dos objetos. Um objeto pode ser nomeado ou anônimo e é representado quase como as classes.


Diagrama de atividades
É um diagrama que apresenta um comportamento do sistema, focado na descrição da ordem dos eventos. É composto por:
  • Estado inicial: Representa o começo de tudo.
  • Estados de ações: Representam uma ação no sistema.
  • Estado final: Representa o fim do fluxo.
  • Transições: Representam a passagem de um estado para outro
  • Decisões: Ramificações (caminhos alternativos) que dependem de uma tomada de decisão.
  • Bifurcações e Uniões: Representam atividades que podem ocorrer em paralelo, a bifurcação representa o começo e pode receber várias entradas, a união representa o fim e tem apenas uma saída
  • Raias de natação: Usadas para mostrar quem é o responsável por determinadas atividades.
  • Fluxo de Objetos: Um complemento ao diagrama que apresenta o estado e/ou os atributos de um objeto relacionados a uma ação.
Veja um exemplo de diagrama de atividades com os principais componentes:

quarta-feira, novembro 17

Java - Collections

O Framework de Collections do Java fornece várias classes para manipular estruturas de dados complexas de forma abstrata.

A Collection se divide básicamente em Listas e Conjuntos.
Veja abaixo as principais características de cada classe:

Listas:
  • Permitem repetição
  • Mantêm a ordem de inserção
ArrayList:
  • A busca é feita diretamente pelo índice, por isso é extremamente rápido
  • A inserção e remoção dependem da quantidade de itens na lista
LinkedList (Lista ligada):
  • A busca, inserção e remoção são feitas de forma linear, dependem da quantidade de itens na lista
Conjuntos:
  • Não permitem repetição
  • Não mantêm a ordem de inserção
HashSet:
  • Mistura um array com uma lista ligada
  • A busca é muito eficiente
  • A inserção e remoção também são muito eficientes
  • É impossível determinar a ordem de saída dos dados
TreeSet (Árvore binária):
  • É balanceada automáticamente
  • A busca, inserção e remoção são eficientes
  • A saída dos dados sempre estará ordenada
Além dessas classe básicas, também existem outras duas classe importantes:

Map:
  • É um conjunto de pares
  • As chaves não podem ser repetidas
  • O percurso é feito através das chaves
  • Se divide em HashMap e TreeMap
Properties:
  • É um mapa, mas com chaves e valores do tipo String
  • Geralmente usado para armazenar configurações da aplicação
Nas Collections é importante conhecer o Iterator, ele serve para navegar em uma collection:
  • Para obter o Iterator de uma Collection utiliza-se o método iterator() da Collection
  • Para saber se existe um próximo item na Collection utiliza-se o método hasNext() do Iterator
  • Para retornar o próximo item da lista, utiliza-se o método next() do Iterator

Análise e Projeto Orientado a Objetos - Parte 1

Conceitos
  • Objeto: Uma instância de uma classe
  • Classe: Um conjunto de características e funcionalidades que definem objetos
  • Atributos: Características de uma classe, os dados do objeto
  • Métodos: Uma ação executada, algo que o objeto faz
  • Mensagem: Uma chamada de método
Diagrama de classes

Notação: Um retângulo dividido em 3 partes, na primeira fica o nome, na segunda os atributos, na terceira os métodos e caso seja necessário é possível criar mais dicisões.


Visibilidade: Para os atributos e métodos da classe pode ser usada as seguintes notações de visibilidade:
  • + (público): O atributo/método pode ser acessado por qualquer outra classe
  • - (privado): O atributo/método apenas poderá ser acessado pela própria classe
  • # (protegido): O atributo/método poderá ser acessado apenas pela própria classe e suas descendentes na herança
  • ~ (pacote/default): O atributo/método pode ser acessado pelas classes que estão no mesmo pacote
Abstrata, Concreta e Interface: Uma classe abstrata não pode ser instanciada, declara os atributos e métodos mas não implementa. Uma classe concreta não possui métodos abstratos e implementam todos os seus métodos (uma classe simples). Uma inteface é um “contrato” que informa o que a classe deve fazer mas não tem nenhuma implementação.

Relacionamento entre classes

Associação:  Representa uma relação “tem um” ou “existe um”. É quando uma classe faz referência a outra classe num determinado período de tempo. Um objeto pode existir sem que o outro exista. É representado por uma linha entre as duas classes. É subdividido em:

    Agregação: Uma relação forte “tem um” que define uma propriedade, quando a classe que se relaciona deixa de existir, a classe relacionada continua existindo mas perde parte do sentido de existência. É representado por uma linha, no lado da classe que se relaciona coloca-se um diamante sem preenchimento e no lado da classe relacionada coloca-se uma seta.


    Composição:  Uma relação muito forte “todo-parte” que diz que uma classe “é parte de” outra classe. Quando a classe que se relaciona é destruída, a relacionada também será. É representado por uma linha, no lado da classe que se relaciona coloca-se um diamante  preenchido e no lado da classe relacionada coloca-se uma seta.


Generalização: Representa uma “herança”. De uma classe mais geral para uma classe mais específica. É representada por um linha, na ponta da classe generalizada coloca-se um triângulo.


Dependência: É a relação mais fraca, acontece quando uma classe usa outra classe através da chamada de um método estático ou quando é usado como parâmetro de um método. É representado por uma linha tracejada apontando para a classe que é usada.


Reconhecimento de classe

Para reconhecer as classes você pode interpretar um caso de uso destacando as seguintes características:
  • Substantivos: se transformam nas classes. Ex.: Pessoa, Carro, Escola.
  • Adjetivos: se transformam nos atributos de uma classe. Ex.: cor, peso, altura, endereço.
  • Verbos: se transformam nos métodos de uma classe. Ex.: estudar, andar, acelerar.
É preciso saber interpretar o texto do caso de uso para saber relacionar os atributos e verbos a classe certa.

Segue abaixo uma imagem que exemplifica as principais notações do diagrama de classes:
Exemplo de diagrama de classes