Frank Coelho de Alcantara -2020
Uma classe é uma abstração para todos os objetos com as mesmas características.
Objetos são criados a partir de uma classe, mas são definidos por sua identidade, estado e comportamento.
A identidade de um objeto é determinada por um identificador único aquele objeto.
Por exemplo: podemos usar o cpf como identificador único de pessoas no Brasil.
Um campo que seja exclusivo de um objeto, e apenas deste objeto.
O estado de um objeto, em um instante do tempo, é determinado por todos os valores das suas propriedades.
A palavra propriedade pode ser substituída por atributos.
O estado de um objeto é uma propriedade dinâmica e depende do estado de todos os objetos em um dado instante.
O comportamento de um objeto é determinado pela forma como ele reage a uma troca de informações.
As informações são trocadas por meio de métodos que permitem, ou não, acesso as propriedades do objeto.
O estado da máquina em um determinado instante é consequência do comportamento de todos os objetos na memória.
A instância é o espaço de memória utilizado para criar um dos objetos definido pela classe.
Uma instância, é um objeto com valores nos campos e com métodos disponíveis.
A classe é apenas o mapa que usamos para instanciar objetos em memória.
A arte de deixar a vista apenas o indispensável.
Todo o estado da máquina depende da troca de informações. Podemos controlar este estado, controlando informações.
Usamos para isso os conceitos de abstração e visibilidade.
Só para lembrar: usamos a palavra abstrato para indicar componentes que mantém características comuns.
A classe abstrata, superclass, contém os métodos e propriedades que são comuns a outras classes.
A classe concreta, subclass, herda estes métodos e propriedades.
Este processo de aproveitamento de características de uma classe em outra é chamada de herança e não é raro que remeta a uma estrutura hierárquica.
Não é raro usarmos classe abstrata como classe pai, e classe concreta como classe filho.
Usamos setas com a ponta aberta, indo da concreta para a abstrata indicando generalização por herança.
Privado: a propriedade ou método não pode ser visto por outras classes.
Público: a propriedade ou método está acessível para todas as classes.
Protegido: a propriedade ou método está acessível para todas as classes concretas, herdeiras da classe abstrata.
Estático: Existe uma instância e é compartilhada por todos os objetos.
Representação | Significado |
---|---|
$0..*$ | Nenhuma ou muitas |
$0..1$ ou $1$ | Nenhuma ou uma |
$1..*$ | Uma ou muitas |
$3..5$ | três, quatro ou cinco |
Agregação ocorre quando uma classe é uma coleção de outras classes, porém o ciclo de vida da classe contida não depende da classe que a contém
A composição indica um relacionamento forte. Não existe a parte se não existir o todo. A agregação pode ser substituida pela associação. A composição não.
Composição: usamos para representar uma relação entre abstrato e concreto.
Esta é a relação de herança onde uma classe herda métodos e propriedades de outra classe. Os objetos poderão usar métodos tanto da classe concreta quanto da classe abstrata.
Usamos a generalização quando existe uma quantidade significativa de informação compartilhada por dois, ou mais objetos de negócio.
A generalização permite a uniformidade do tratamento para todas as informações comuns.
Do ponto de vista do negócio, facilita o entendimento das relações entre as entidades envolvidas.
Do ponto de vista do código, permite a uniformidade, reaproveitamento e segurança do código.
Qualquer alteração na classe que dispara a ação de dependência pode afetar a classe disparada.
Estes são todos os símbolos que precisamos para criar um diagrama de classes. O problema não está na sintaxe. O problema está na semântica.
Vamos tentar chegar a um diagrama de classes clicando aqui
Você pode baixar o material de apoio clicando aqui