O desenvolvimento de um software orientado a objetos nada mais é que a aproximação do manejo das coisas de um mundo real com o manejo das estruturas de um sistema de software. Em virtude disso, temos o conceito de objeto como sendo algo genérico, que poderá retratar qualquer coisa tangível do mundo real, como animais e pessoas, os quais carregam consigo determinadas características (atributos) e certos comportamentos (ações).
Desse modo, é essencial entendermos o conceito de orientação a objetos, visto que a UML é comumente empregada nesse paradigma. Assim, você verá a seguir todos os principais conceitos dessa abordagem.
Inicialmente, você entenderá os conceitos de classes, abstração e instanciação de modo mais aprofundado, acompanhe o vídeo a seguir!
Confira o
vídeo sobre conceitos de classes, abstração e instanciação.
Confira aqui o que foi abordado no vídeo.
Diante do que você viu, de modo resumido, podemos dizer que a classe é o nome dado a um grupo de objetos com características em comum, já o conceito de abstração representa as diferentes manifestações de um objeto pertencente a uma classe. Por sua vez, o termo instanciação se refere a uma manifestação específica de um objeto referente a uma classe.
A partir disso, a fim de que esses conceitos se tornem mais concretos no seu entendimento, imagine o seguinte: existe o objeto no mundo denominado "cão". Por sua vez, a classe dele é a canina, sendo que a sua abstração é a de um poodle, de um vira lata, de um basset e, finalmente, uma instanciação dele é o cão lassie.
Neste tópico, você pôde entender os conceitos de classes, abstração e instanciação. Inclusive, não só eles são importantes para compreensão da Linguagem de Modelagem Unificada, bem como auxiliam no entendimento de outro conceito: o de propriedades (ou ainda denominado de atributos).
Diante disso, conforme você verá no tópico adiante, as propriedades, ou atributos, possuem um papel muito relevante que é estabelecer as características e os atributos dos elementos de uma classe.
As propriedades, também conhecidas como atributos, trata-se de recursos de uma classe ou qualquer elemento de dados. Em outras palavras, são as características da estrutura de uma classe. Em determinadas linguagens de programação, os atributos são chamados de “membros de dados”, ou “variáveis de instância de classe”.
Os atributos são apresentados na segunda divisão da classe e, geralmente, possuem dois dados, que são: tipo de informação que o atributo armazena (character, integer etc.) e nome que o identifica.
Os atributos possuem características referentes à classe pertencente. Todas as instâncias de uma mesma classe terão propriedades iguais, mas podem conter valores diferentes. Na classe carro, por exemplo, atributos como cor, modelo e marca do automóvel podem ter valores distintos.
Outra característica importante é a visibilidade de um atributo, que poderá ser privada, pública, de pacote e protegida. Veja mais detalhes na tabela!
Visibilidades de um atributo
Privada - Só a própria classe a qual o atributo pertence pode acessá-lo (enxergá-lo). É simbolizada com um sinal de subtração (-). Pública - O atributo pode ser acessado (enxergado) por outras classes. É simbolizada pelo sinal de adição (+). De pacote - O atributo só poderá ser acessado pelas classes do pacote que o contém. É simbolizada pelo til (~) e disponibilizada em algumas linguagens, como C# e Java. Protegida - O atributo só poderá ser acessado pela própria classe (superclasse) e suas subclasses. É simbolizada pelo sustenido (#)
Vale ressaltar que o valor inicial e o tipo de dado do atributo dependerão da linguagem de programação utilizada.
Outra característica importante das classes são os comportamentos (ações) que elas podem ter. Ainda utilizando o exemplo da classe “pessoa”, esta pode ter o comportamento de andar, deitar-se, correr, nadar, dirigir, trabalhar, comer etc.
Portanto, um objeto associado à criação de um software, a partir do qual a linguagem UML será empregada, possui um conjunto de atributos, ou seja, as características da estrutura de uma classe juntamente com os seus comportamentos.
Contudo, ainda é válido abordar outro conceito atrelado aos anteriores e que são muito relevantes. Estamos falando das operações. Acompanhe na sequência!
As classes carregam operações — termo utilizado pela UML —, também conhecidas como métodos ou comportamentos (ações).
Um método é definido por uma ação que um objeto de determinada classe pode realizar, ou pelos serviços suportados por essa classe. Ele é guardado na terceira parte da classe.
Para que você entenda melhor, veja este caso: na criação de um software, um dos objetos representados é um fusca, logo, esse objeto está inserido na classe “carro”, sendo que um dos métodos desempenhados por essa classe é a de “transportar pessoas”.
Considerando isso, acompanhe também o recurso a seguir:
A partir do exemplo anterior, você viu o conceito de métodos e de comportamentos, os quais estão associados à classe, à abstração e à instanciação.
Entretanto, há outro conceito essencial neste contexto: a herança. Isto é, o fato de que uma classe filha (subclasse) pode herdar o comportamento e/ou a estrutura de uma classe mãe (super classe). Vamos conferir como ela funciona? Siga em frente!
A herança, também conhecida por generalização, possibilita o reaproveitamento de métodos e atributos. Com isso, otimiza tempo no desenvolvimento do software. Observe a imagem com atenção!
Note que a generalização envolve os conceitos de classe mãe (superclasse) e classe filha (subclasse). A superclasse é uma classe que possui várias outras criadas a partir dela, que são as subclasses. Logo, estas, criadas a partir da superclasse, herdam todos os seus métodos e atributos.
No exemplo utilizado na imagem, a classe “veículo” é a classe mãe (superclasse), enquanto as classes “carro”, “ônibus” e “caminhão” são as classes filhas (subclasses ou derivadas) que herdaram os atributos de marca, ano, cor e modelo, assim como os comportamentos de acelerar e ligar da classe mãe.
Além disso, as classes filhas terão seus atributos e métodos exclusivos que os distinguiram, como o “carro”, que tem o atributo exclusivo “combustível”; o “ônibus”, que terá o atributo exclusivo “passageiro” e o comportamento (operação) exclusivo “acionar campainha”; e “caminhão”, que terá os atributos exclusivos “eixos”, “tara” e “trucado”, com o comportamento de “levantar carroceria”.
Até aqui você compreendeu o conceito de herança e como ele se aplica na relação entre classe mãe e filha. Vale ressaltar que a herança é um excelente recurso na criação de software, sobretudo, porque ele otimiza esse processo.
Siga adiante para conhecer o conceito de polimorfismo e como ele pode ajudá-lo no desenvolvimento de seu software.
Você saberia explicar do que se trata? Entenda melhor seu conceito, com o podcast que preparamos para você!
Simples não é mesmo? Você percebeu que, no processo de criação das classes, ainda existem subclassificações, necessitando de um recurso que auxilie na derivação entre uma superclasse e as suas subclasses, sendo que isso é feito a partir do conceito de polimorfismo.
Todavia, é interessante observar que as informações contidas em uma classe mãe ou filha podem, ainda, estar visíveis ou não para outros objetos, que é o conceito de encapsulamento, que você estudará agora. Vamos lá?
A ocultação de informações, mais conhecida por encapsulamento, refere-se ao procedimento de separar as questões internas das externas de um objeto. Dessa maneira, alguns detalhes ficam ocultos dos outros objetos, dizendo respeito somente ao próprio objeto a que pertencem.
Observe com atenção na imagem, como o encapsulamento pode ser público (+), protected (#), private (-) ou package (~).
Dessa forma, o principal benefício do encapsulamento é a possibilidade de isolar (proteger) os dados. Quando dizemos que os atributos estão encapsulados, queremos explicar que estão protegidos por um código, de modo que só serão acessíveis (visíveis) na operação em que foram concebidos. Ele se aplica para as operações, quando estas estão visíveis apenas ao objeto ao qual pertencem.
É importante salientar que o ato de encapsular cria uma dependência direta com a herança, visto que os objetos da classe filha herdaram todos os atributos e todas as ações (operações) da classe mãe.
Para saber mais detalhes sobre a programação orientada a objetos, sugerimos que leia o artigo POO: Tudo sobre Programação Orientada a Objetos!, escrito por Cairo Noleto. Também indicamos que assista ao vídeo O que é Programação Orientada a Objetos - Conceitos Básicos de POO para que os conceitos fiquem mais claros!
Aqui abordamos os conceitos essenciais para a sua futura atuação profissional no contexto da POO (Programação Orientada a Objetos), que é uma importante forma de se desenvolver softwares a partir do uso da linguagem UML.
Para isso, você entendeu os conceitos de classes, abstração e instanciação, atributos e comportamentos, herança e polimorfismo.
Agora você está por dentro de o que é a programação orientada a objetos e os conceitos relacionados! Siga para o próximo módulo para aprender sobre as notações e o desenvolvimento de uma UML.
Selecione o botão “Avançar” e confira!