OOPs Concepts in Java

conceitos oops em java

O que รฉ OOPS?

Sistema de Programaรงรฃo Orientada a Objetos (OOPs) รฉ um conceito de programaรงรฃo que funciona com base nos princรญpios de abstraรงรฃo, encapsulamento, heranรงa e polimorfismo. Ele permite que os usuรกrios criem os objetos que desejam e criem mรฉtodos para lidar com esses objetos. O conceito bรกsico de OOPs รฉ criar objetos, reutilizรก-los em todo o programa e manipular esses objetos para obter resultados.

OOP, que significa โ€œProgramaรงรฃo Orientada a Objetosโ€, รฉ um conceito popularmente conhecido e amplamente utilizado em linguagens de programaรงรฃo modernas como Java.

OOPs Concepts in Java com exemplos

A seguir estรฃo os conceitos gerais de POO em Java:

1) Classe

O processo de classe รฉ um dos conceitos bรกsicos de POO que รฉ um grupo de entidades semelhantes. ร‰ apenas um componente lรณgico e nรฃo a entidade fรญsica. Vamos entender este dos POO Concepts por exemplo, se vocรช tivesse uma classe chamada โ€œCarros carosโ€, ela poderia ter objetos como Mercedes, BMW, Toyota, etc. Suas propriedades (dados) podem ser o preรงo ou a velocidade desses carros. Embora os mรฉtodos possam ser executados com esses carros sรฃo dirigir, dar rรฉ, frear, etc.

2) Objeto

Um objeto pode ser definido como uma instรขncia de uma classe e pode haver mรบltiplas instรขncias de uma classe em um programa. Um objeto รฉ um dos Java Conceitos OOPs que contรชm tanto os dados quanto a funรงรฃo, que opera nos dados. Por exemplo โ€“ cadeira, bicicleta, marcador, caneta, mesa, carro, etc.

3) Heranรงa

Heranรงa รฉ um dos bรกsicos Concepts de OOPs em que um objeto adquire as propriedades e comportamentos do objeto pai. Estรก criando um relacionamento pai-filho entre duas classes. Oferece mecanismo robusto e natural para organizaรงรฃo e estrutura de qualquer software.

4) Polimorfismo

Polimorfismo refere-se a um dos conceitos de POO em Java que รฉ a capacidade de uma variรกvel, objeto ou funรงรฃo assumir mรบltiplas formas. Por exemplo, em inglรชs, o verbo corrida tem um significado diferente se vocรช usรก-lo com um laptop, uma corrida a pรฉ e negรณcio. Aqui entendemos o significado de corrida com base nas outras palavras usadas junto com ele. O mesmo tambรฉm se aplica ao Polimorfismo.

5) Abstraรงรฃo

Abstraรงรฃo รฉ um dos OOP Concepts in Java que รฉ um ato de representar caracterรญsticas essenciais sem incluir detalhes de fundo. ร‰ uma tรฉcnica de criaรงรฃo de um novo tipo de dado que รฉ adequado para uma aplicaรงรฃo especรญfica. Vamos entender este um dos POO Concepts por exemplo, ao dirigir um carro, vocรช nรฃo precisa se preocupar com seu funcionamento interno. Aqui vocรช sรณ precisa se preocupar com peรงas como volante, marchas, acelerador, etc.

6) Encapsulamento

Encapsulamento รฉ um dos melhores Java Conceitos de POO de encapsulamento de dados e cรณdigo. Neste conceito de POO, as variรกveis โ€‹โ€‹de uma classe sรฃo sempre ocultas de outras classes. Elas sรณ podem ser acessadas usando os mรฉtodos de sua classe atual. Por exemplo โ€“ na escola, um aluno nรฃo pode existir sem uma classe.

7) Associaรงรฃo

Associaรงรฃo รฉ um relacionamento entre dois objetos. ร‰ um dos OOP Concepts in Java que define a diversidade entre os objetos. Neste conceito OOP, todos os objetos tรชm seu ciclo de vida separado e nรฃo hรก proprietรกrio. Por exemplo, muitos alunos podem associar-se a um professor, enquanto um aluno tambรฉm pode associar-se a vรกrios professores.

8) Agregaรงรฃo

Nesta tรฉcnica, todos os objetos tรชm seu ciclo de vida separado. No entanto, existe uma propriedade tal que o objeto filho nรฃo pode pertencer a outro objeto pai. Por exemplo, considere o departamento de classe/objetos e o professor. Aqui, um รบnico professor nรฃo pode pertencer a vรกrios departamentos, mas mesmo se excluirmos o departamento, o objeto professor nunca serรก destruรญdo.

9) Composiรงรฃo

A composiรงรฃo รฉ uma forma especializada de agregaรงรฃo. Tambรฉm รฉ chamado de relacionamento de โ€œmorteโ€. Os objetos filhos nรฃo tรชm seu ciclo de vida, portanto, quando o objeto pai for excluรญdo, todos os objetos filhos tambรฉm serรฃo excluรญdos automaticamente. Para isso, vamos dar um exemplo de Casa e quartos. Qualquer casa pode ter vรกrios cรดmodos. Um quarto nรฃo pode fazer parte de duas casas diferentes. Portanto, se vocรช excluir o cรดmodo da casa tambรฉm serรก excluรญdo.

Vantagens dos OOPs (Sistema de Programaรงรฃo Orientada a Objetos):

  • OOPs Concepts in Java oferecem fรกcil compreensรฃo e uma estrutura modular clara para programas.
  • Objetos criados para Programas Orientados a Objetos podem ser reutilizados em outros programas. Assim, economiza custos de desenvolvimento significativos.
  • Programas grandes sรฃo difรญceis de escrever, mas se a equipe de desenvolvimento e design seguir os conceitos OOPS, eles poderรฃo projetar melhor com o mรญnimo de falhas.
  • Aumenta a modularidade do programa porque cada objeto existe de forma independente.

Comparaรงรฃo de OOPS com outros estilos de programaรงรฃo com ajuda de um exemplo

Vamos entender com exemplo como Java OOPs Concepts sรฃo diferentes de outras abordagens de programaรงรฃo.

Linguagens de programaรงรฃo podem ser classificados em 3 tipos principais

  1. Linguagens de programaรงรฃo nรฃo estruturadas: A mais primitiva de todas as linguagens de programaรงรฃo com fluxo de controle sequencial. O cรณdigo รฉ repetido ao longo do programa
  2. Linguagens de programaรงรฃo estruturada: Possui fluxo de controle nรฃo sequencial. O uso de funรงรตes permite a reutilizaรงรฃo de cรณdigo.
  3. Linguagens de programaรงรฃo orientadas a objetos: Combina dados e aรงรตes.

Clique aqui. se o vรญdeo nรฃo estiver acessรญvel

Vamos entender esses 3 tipos com um exemplo.

Suponha que vocรช queira criar um Software Bancรกrio com funรงรตes como

  1. Depositar
  2. Realize o
  3. Mostrar saldo

Linguagens de programaรงรฃo nรฃo estruturadas

As primeiras linguagens de programaรงรฃo foram linguagens de programaรงรฃo nรฃo estruturadas. Um cรณdigo muito elementar de aplicaรงรฃo bancรกria em linguagem de programaรงรฃo nรฃo estruturada terรก duas variรกveis โ€‹โ€‹de um nรบmero de conta e outra para saldo de conta

int account_number=20;
int account_balance=100;

Suponha que seja feito um depรณsito de 100 dรณlares.

account_balance=account_balance+100

Em seguida, vocรช precisa exibir o saldo da conta.

printf(โ€œAccount Number=%d,account_number)
printf(โ€œAccount Balance=%d,account_balance)

Agora foi sacada a quantia de 50 dรณlares.

account_balance=account_balance-50

Novamente, vocรช precisa exibir o saldo da conta.

printf(โ€œAccount Number=%d,account_number)
printf(โ€œAccount Balance=%d,account_balance)

Programaรงรฃo Nรฃo Estruturada

Para qualquer outra operaรงรฃo de depรณsito ou retirada โ€“ vocรช repetirรก as mesmas linhas repetidamente.

Programaรงรฃo Estruturada

Com a chegada da programaรงรฃo estruturada, linhas repetidas do cรณdigo foram colocadas em estruturas como funรงรตes ou mรฉtodos. Sempre que necessรกrio, รฉ feita uma simples chamada ร  funรงรฃo.

Programaรงรฃo Estruturada

Programaรงรฃo Orientada a Objetos

Em nosso programa, estamos lidando com dados ou realizando operaรงรตes especรญficas nos dados. Na verdade, ter dados e realizar determinada operaรงรฃo nesses dados รฉ uma caracterรญstica muito bรกsica em qualquer programa de software. Especialistas em Programaรงรฃo de Software pensaram em combinar os Dados e Operaรงรตes. Portanto, o nascimento da Programaรงรฃo Orientada a Objetos, que รฉ comumente chamada de OOPS. O mesmo cรณdigo em linguagens de Programaรงรฃo Orientada a Objetos terรก os mesmos dados e alguma aรงรฃo realizada nesses dados.

Class Account{
    int account_number;
    int account_balance;
public void showdata(){
    system.out.println(โ€œAccount Numberโ€+account_number)
    System.out.println(โ€œAccount Balanceโ€+ account_balance)
}
}

Programaรงรฃo Orientada a Objetos

Ao combinar dados e aรงรตes, obteremos muitas vantagens sobre a programaรงรฃo estrutural, a saber,

  • Abstraรงรฃo
  • Encapsulamento
  • Heranรงa
  • Polimorfismo

Eles sรฃo discutidos em maiores detalhes nos tutoriais seguintes

Resuma esta postagem com: