Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Claro! Vamos criar um exemplo de programação orientada a objetos (POO) em C++. Vou demonstrar como podemos usar classes, encapsulamento, herança, polimorfismo e outros conceitos importantes da POO neste contexto.
### Exemplo de Programação Orientada a Objetos em C++
```cpp
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// Classe base para representar um Livro na biblioteca
class Livro {
protected:
 string titulo;
 string autor;
 string isbn;
 bool emprestado;
public:
 Livro(string titulo, string autor, string isbn) 
 : titulo(titulo), autor(autor), isbn(isbn), emprestado(false) {}
 void emprestar() {
 if (!emprestado) {
 emprestado = true;
 cout << "O livro \"" << titulo << "\" foi emprestado." << endl;
 } else {
 cout << "O livro \"" << titulo << "\" já está emprestado." << endl;
 }
 }
 void devolver() {
 if (emprestado) {
 emprestado = false;
 cout << "O livro \"" << titulo << "\" foi devolvido com sucesso." << endl;
 } else {
 cout << "O livro \"" << titulo << "\" já está disponível na biblioteca." << endl;
 }
 }
 virtual void detalhes() {
 cout << "Livro: " << titulo << " por " << autor << endl;
 }
};
// Subclasse de Livro para livros didáticos
class LivroDidatico : public Livro {
private:
 string disciplina;
public:
 LivroDidatico(string titulo, string autor, string isbn, string disciplina)
 : Livro(titulo, autor, isbn), disciplina(disciplina) {}
 void detalhes() override {
 cout << "Livro: " << titulo << " por " << autor << " (Disciplina: " << disciplina << ")" << endl;
 }
};
// Classe para representar um usuário da biblioteca
class Usuario {
private:
 string nome;
 int idade;
public:
 Usuario(string nome, int idade) : nome(nome), idade(idade) {}
 string getNome() const {
 return nome;
 }
};
// Classe principal que gerencia a biblioteca
class Biblioteca {
private:
 string nome;
 vector<Livro*> catalogo;
public:
 Biblioteca(string nome) : nome(nome) {}
 void adicionarLivro(Livro* livro) {
 catalogo.push_back(livro);
 cout << "O livro \"" << livro->getTitulo() << "\" foi adicionado ao catálogo." << endl;
 }
 void listarLivros() {
 cout << "Catálogo da Biblioteca " << nome << ":" << endl;
 for (Livro* livro : catalogo) {
 livro->detalhes();
 }
 }
 Livro* buscarLivroPorTitulo(string titulo) {
 for (Livro* livro : catalogo) {
 if (livro->getTitulo() == titulo) {
 return livro;
 }
 }
 return nullptr;
 }
 void emprestarLivro(string titulo, Usuario* usuario) {
 Livro* livro = buscarLivroPorTitulo(titulo);
 if (livro) {
 livro->emprestar();
 cout << "O livro foi emprestado para " << usuario->getNome() << "." << endl;
 } else {
 cout << "O livro \"" << titulo << "\" não está disponível na biblioteca." << endl;
 }
 }
 void devolverLivro(string titulo) {
 Livro* livro = buscarLivroPorTitulo(titulo);
 if (livro) {
 livro->devolver();
 } else {
 cout << "O livro \"" << titulo << "\" não está registrado na biblioteca." << endl;
 }
 }
};
// Função principal para testar o sistema
int main() {
 // Criando alguns objetos para demonstração
 Livro livro1("Dom Quixote", "Miguel de Cervantes", "9780199537891");
 Livro livro2("Python Cookbook", "David Beazley", "9781449340377");
 LivroDidatico livro3("Introduction to Algorithms", "Thomas H. Cormen", "9780262033848", "Algorithms");
 Usuario usuario1("Alice", 25);
 Usuario usuario2("Bob", 30);
 // Criando uma biblioteca
 Biblioteca biblioteca("Biblioteca Central");
 // Adicionando livros ao catálogo da biblioteca
 biblioteca.adicionarLivro(&livro1);
 biblioteca.adicionarLivro(&livro2);
 biblioteca.adicionarLivro(&livro3);
 // Listando todos os livros no catálogo da biblioteca
 biblioteca.listarLivros();
 // Alice empresta um livro
 biblioteca.emprestarLivro("Dom Quixote", &usuario1);
 // Bob tenta emprestar o mesmo livro
 biblioteca.emprestarLivro("Dom Quixote", &usuario2);
 // Alice devolve o livro
 biblioteca.devolverLivro("Dom Quixote");
 // Listando livros novamente
 biblioteca.listarLivros();
 return 0;
}
```
### Explicação do Código
1. **Classes e Objetos:**
 - `Livro`, `LivroDidatico`, `Usuario`, `Biblioteca` são classes que representam entidades do sistema.
2. **Herança:**
 - `LivroDidatico` herda publicamente de `Livro`, permitindo a extensão das funcionalidades básicas de livro.
3. **Encapsulamento:**
 - Atributos como `titulo`, `autor`, `isbn`, `emprestado`, `nome`, `idade` são encapsulados dentro das classes correspondentes, garantindo controle sobre o acesso aos dados.
4. **Polimorfismo:**
 - O método `detalhes()` é sobrescrito em `Livro` e `LivroDidatico` para retornar representações diferentes dos objetos.
5. **Operações do Sistema:**
 - Métodos como `adicionarLivro()`, `listarLivros()`, `emprestarLivro()`, `devolverLivro()` demonstram operações típicas de um sistema de biblioteca, aplicando os conceitos de POO de forma prática.
### Conclusão
Este exemplo em C++ ilustra como a programação orientada a objetos pode ser aplicada para criar sistemas complexos e organizados, como um sistema de gerenciamento de biblioteca. A POO em C++ oferece vantagens como reutilização de código, encapsulamento de dados, hierarquias de classes e polimorfismo, que tornam o desenvolvimento e manutenção de software mais eficiente e escalável. Integrar esses princípios em projetos de TI pode melhorar a estrutura, segurança e eficiência dos sistemas, adequando-se às demandas crescentes e complexas do mundo moderno.

Mais conteúdos dessa disciplina