Programação Orientada a Objetos: Uma Abordagem com Java/Introdução/Classes: diferenças entre revisões

m
mSem resumo de edição
== Classes ==
A definição de classes e seus inter-relacionamentos é o principal resultado da etapa de projeto de software. Em geral, esse resultado é expresso em termos de alguma linguagem de modelagem, tal como a ''[http://www.uml.org Unified Modeling Language]'' (UML).
 
Uma vez que estejam definidas quais serão as classes que irão compor uma aplicação, assim como qual deve ser sua estrutura interna e comportamento, é possível criar essas classes em Java.
 
=== Elementos de uma classe ===
Na UML, a representação para uma classe no diagrama de classes é tipicamente expressa na forma gráfica por um retângulo com divisões para o nome da classe, o conjunto de atributos e o conjunto de operações.
 
As operações definem as funcionalidades da classe, ou seja, o que será possível fazer com objetos dessa classe. Cada operação tem uma assinatura, composta por um identificador (o nome da operação), o tipo para o valor de retorno e sua lista de argumentos, sendo cada argumento identificado por seu tipo e nome. Pelo mecanismo de sobrecarga (''overloading''), duas operações de uma classe podem ter o mesmo nome, desde que suas assinaturas sejam diferentes. Tal situação não gera conflito pois o compilador é capaz de detectar qual método que implementa a operação deve ser escolhido a partir da análise dos tipos dos argumentos do método. Nesse caso, diz-se que ocorre a ligação prematura (''early binding'') para o método correto.
 
=== Modificadores ===
 
O modificador de visibilidade pode estar presente tanto para atributos como para métodos. Em princípio, três categorias de visibilidade podem ser definidas:
;público
* '''público''', denotado em UML pelo símbolo +: nesse caso, o atributo ou método de um objeto dessa classe pode ser acessado por qualquer outro objeto (visibilidade externa total);
* '''privativo''',: denotado em UML pelo símbolo -+: nesse caso, o atributo ou método de um objeto dessa classe não pode ser acessado por nenhumqualquer outro objeto (nenhuma visibilidade externa total);
;privativo
* '''protegido''', denotado em UML pelo símbolo #: nesse caso, o atributo ou método de um objeto dessa classe poderá ser acessado apenas por objetos de classes que sejam derivadas dessa através do mecanismo de herança.
* '''público''',: denotado em UML pelo símbolo +-: nesse caso, o atributo ou método de um objeto dessa classe não pode ser acessado por qualquernenhum outro objeto (nenhuma visibilidade externa total);
;protegido
* '''protegido''',: denotado em UML pelo símbolo #: nesse caso, o atributo ou método de um objeto dessa classe poderá ser acessado apenas por objetos de classes que sejam derivadas dessa através do mecanismo de herança.
 
Outros modificadores podem estar presentes, mas esses serão vistos adiante.
46

edições