Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

<p>A **Programação Orientada a Objetos (POO)** é um paradigma de programação amplamente</p><p>utilizado em várias linguagens de programação, e o **Java** é uma das linguagens mais</p><p>conhecidas por implementar esse paradigma de forma robusta e eficiente. POO é uma maneira</p><p>de organizar o código, projetar e modelar sistemas de software baseados em **objetos**, que são</p><p>instâncias de **classes**.</p><p>### Princípios Fundamentais da POO</p><p>1. **Encapsulamento**:</p><p>- O encapsulamento refere-se à ocultação dos detalhes internos de um objeto e à exposição</p><p>apenas do que é necessário. Em Java, isso é alcançado através do uso de modificadores de acesso</p><p>como `private`, `protected`, e `public`. Os atributos de uma classe normalmente são declarados</p><p>como `private`, e métodos `public` ou `protected` são fornecidos para acessar e modificar esses</p><p>atributos.</p><p>- Exemplo:</p><p>```java</p><p>public class Pessoa {</p><p>private String nome;</p><p>public String getNome() {</p><p>return nome;</p><p>}</p><p>public void setNome(String nome) {</p><p>this.nome = nome;</p><p>}</p><p>}</p><p>```</p><p>- Neste exemplo, o atributo `nome` é encapsulado dentro da classe, sendo acessado e</p><p>modificado apenas pelos métodos `getNome()` e `setNome()`.</p><p>2. **Herança**:</p><p>- A herança permite que uma classe (`subclasse`) herde as propriedades e comportamentos de</p><p>outra classe (`superclasse`). Isso promove a reutilização de código e facilita a extensão de</p><p>funcionalidades existentes.</p><p>- Em Java, a herança é implementada com a palavra-chave `extends`. Uma subclasse herda</p><p>métodos e atributos da superclasse e pode sobrescrever (override) esses métodos se necessário.</p><p>- Exemplo:</p><p>```java</p><p>public class Animal {</p><p>public void fazerSom() {</p><p>System.out.println("Som de animal");</p><p>1</p><p>}</p><p>}</p><p>public class Cachorro extends Animal {</p><p>@Override</p><p>public void fazerSom() {</p><p>System.out.println("Latido");</p><p>}</p><p>}</p><p>```</p><p>3. **Polimorfismo**:</p><p>- O polimorfismo permite que objetos de diferentes classes sejam tratados de maneira</p><p>uniforme. Ele pode ocorrer em dois contextos:</p><p>- **Polimorfismo em tempo de compilação (sobrecarga)**: Um método pode ser</p><p>sobrecarregado dentro da mesma classe, ou seja, ter o mesmo nome, mas assinaturas</p><p>(parâmetros) diferentes.</p><p>- **Polimorfismo em tempo de execução (sobrescrita)**: Permite que uma subclasse forneça</p><p>uma implementação específica de um método já existente na superclasse. Em Java, isso é feito</p><p>através da anotação `@Override`.</p><p>- Exemplo de sobrecarga:</p><p>```java</p><p>public class Calculadora {</p><p>public int somar(int a, int b) {</p><p>return a + b;</p><p>}</p><p>public int somar(int a, int b, int c) {</p><p>return a + b + c;</p><p>}</p><p>}</p><p>```</p><p>- Exemplo de sobrescrita:</p><p>```java</p><p>public class Ave {</p><p>public void voar() {</p><p>System.out.println("Ave voando");</p><p>}</p><p>}</p><p>public class Pinguim extends Ave {</p><p>@Override</p><p>2</p><p>public void voar() {</p><p>System.out.println("Pinguim não pode voar");</p><p>}</p><p>}</p><p>```</p><p>4. **Abstração**:</p><p>- A abstração é o processo de modelar classes com base em características essenciais, ocultando</p><p>os detalhes de implementação e expondo apenas as funcionalidades importantes. Em Java, a</p><p>abstração é implementada através de **classes abstratas** e **interfaces**.</p><p>- Uma **classe abstrata** é uma classe que não pode ser instanciada diretamente, mas serve</p><p>como uma base para outras classes. Ela pode conter métodos concretos e abstratos (sem</p><p>implementação).</p><p>- Uma **interface** define um contrato que deve ser seguido por qualquer classe que a</p><p>implemente. Todas as interfaces em Java são implicitamente abstratas e podem conter apenas</p><p>métodos abstratos (até Java 7) ou métodos com implementação padrão (a partir de Java 8).</p><p>- Exemplo de classe abstrata:</p><p>```java</p><p>public abstract class Forma {</p><p>public abstract void desenhar();</p><p>}</p><p>public class Circulo extends Forma {</p><p>@Override</p><p>public void desenhar() {</p><p>System.out.println("Desenhando um círculo");</p><p>}</p><p>}</p><p>```</p><p>- Exemplo de interface:</p><p>```java</p><p>public interface Animal {</p><p>void emitirSom();</p><p>}</p><p>public class Gato implements Animal {</p><p>@Override</p><p>public void emitirSom() {</p><p>System.out.println("Miau");</p><p>}</p><p>}</p><p>```</p><p>3</p><p>### Classes e Objetos</p><p>A base da POO é a criação de **classes** e **objetos**. Uma classe define um tipo de objeto,</p><p>descrevendo suas propriedades e comportamentos. Um objeto é uma instância dessa classe.</p><p>- **Classe**: Um modelo ou estrutura para criar objetos. Ela define atributos (dados) e métodos</p><p>(comportamentos) que os objetos dessa classe terão.</p><p>- Exemplo:</p><p>```java</p><p>public class Carro {</p><p>String modelo;</p><p>int ano;</p><p>public void acelerar() {</p><p>System.out.println("O carro está acelerando");</p><p>}</p><p>}</p><p>```</p><p>- **Objeto**: Uma instância concreta de uma classe. Um objeto é criado usando a palavra-chave</p><p>`new`.</p><p>- Exemplo:</p><p>```java</p><p>Carro meuCarro = new Carro();</p><p>meuCarro.modelo = "Fusca";</p><p>meuCarro.ano = 1972;</p><p>meuCarro.acelerar();</p><p>```</p><p>### Modificadores de Acesso</p><p>Java oferece modificadores de acesso para controlar a visibilidade dos atributos e métodos de</p><p>uma classe:</p><p>- **private**: Visível apenas dentro da própria classe.</p><p>- **protected**: Visível dentro da classe e suas subclasses, bem como no mesmo pacote.</p><p>- **public**: Visível por todas as classes.</p><p>- **default (sem modificador)**: Visível apenas para classes no mesmo pacote.</p><p>### Construtores</p><p>2</p><p>Um **construtor** é um método especial usado para inicializar objetos. Ele é chamado</p><p>automaticamente quando um objeto é criado. Em Java, um construtor tem o mesmo nome da</p><p>classe e não tem um tipo de retorno.</p><p>- Exemplo de um construtor:</p><p>```java</p><p>public class Carro {</p><p>String modelo;</p><p>int ano;</p><p>public Carro(String modelo, int ano) {</p><p>this.modelo = modelo;</p><p>this.ano = ano;</p><p>}</p><p>}</p><p>Carro meuCarro = new Carro("Fusca", 1972);</p><p>```</p><p>### Vantagens da POO</p><p>1. **Reutilização de Código**: Com a herança, o código pode ser reutilizado, o que economiza</p><p>tempo e esforço no desenvolvimento.</p><p>2. **Manutenção e Extensibilidade**: A POO facilita a manutenção e evolução de um software,</p><p>permitindo modificar ou estender classes sem alterar outras partes do sistema.</p><p>3. **Organização**: O código é organizado de maneira mais clara e lógica, refletindo os objetos</p><p>do mundo real.</p><p>4. **Facilidade na Modelagem de Problemas**: A POO permite que os desenvolvedores pensem</p><p>em termos de objetos e interações, o que é natural para modelar problemas complexos.</p><p>### Conclusão</p><p>A Programação Orientada a Objetos em Java é uma poderosa abordagem para desenvolvimento</p><p>de software, oferecendo ferramentas e recursos que ajudam a criar sistemas robustos,</p><p>reutilizáveis e fáceis de manter. Ao usar conceitos como encapsulamento, herança, polimorfismo</p><p>e abstração, os desenvolvedores podem organizar melhor seus códigos e projetar aplicações mais</p><p>eficientes.</p><p>3</p>

Mais conteúdos dessa disciplina