Fundamentos de Programação, Arquitetura e Linguagem C
Programação Orientada a Objetos (POO)
A POO é um conjunto de estruturas de dados e programas organizados. Um objeto não é um dado simples, mas contém uma série de componentes estruturados.
Classe
As classes são declarações ou abstrações de objetos. É uma construção estática que descreve comportamentos comuns e atributos, formalizada através de uma estrutura de dados que inclui dados e funções (métodos). Cada classe possui dois métodos principais:
- Construtor: Chamado no momento da instanciação, é responsável pela inicialização de valores e, frequentemente, pela chamada de construtores de outras classes.
- Destrutor: Chamado ao final do ciclo de vida da instância para liberar recursos.
Conceitos Fundamentais
- Objetos: Instâncias de uma classe. A ação de criar um objeto é chamada de instanciação.
- Identidade: Capacidade de diferenciar uma instância de outra.
- Comportamento: Permite executar tarefas específicas.
- Status: Determinado por informações armazenadas, que podem ser fixas ou variáveis.
- Abstração de Dados: Capacidade de um objeto executar funções independentemente do contexto, ocultando detalhes não essenciais.
- Encapsulamento: Característica que permite ao objeto atender solicitações via métodos, sem expor os meios utilizados para obter os resultados.
Atributos e métodos estáticos são comuns a todas as instâncias e podem ser acessados sem instanciar a classe.
Herança
Permite que uma classe herde variáveis e métodos de outras (superclasse ou classe pai), criando uma hierarquia.
Polimorfismo
Possibilidade de definir várias operações com o mesmo nome, diferenciadas pelos parâmetros de entrada. Também define a capacidade de criar objetos usando um tipo base comum.
Classes Abstratas
Possuem métodos declarados, mas não implementados. Não podem ser instanciadas e servem para definir conceitos incompletos que devem ser finalizados em subclasses.
Arquitetura de um Computador
Hardware: Componentes físicos do computador. Composto por quatro unidades básicas:
- Unidade de Entrada: Recebe dados e instruções.
- CPU: Dispositivo de processamento eletrônico. Composto por:
- Unidade de Controle: Gerencia a transferência de dados.
- Unidade Lógica Aritmética (ALU): Executa operações aritméticas, lógicas e relacionais.
- Registradores: Armazenam temporariamente instruções e dados.
- Unidade de Memória: Armazena programas e dados.
- Unidades de Saída: Exibem os resultados processados.
Representação de Dados e Software
- Bits e Bytes: Dados representados por 0 e 1 (bits). Um conjunto de 8 bits forma um byte.
- Software: Programas que dirigem o hardware.
- Sistema Operacional: Administra recursos e fornece interface. Utiliza Diretórios (organização hierárquica) e Arquivos (armazenamento de informações).
- Aplicações: Programas para tarefas específicas (banco de dados, processamento de texto, etc.).
Sistemas de Desenvolvimento
Classificados por:
- Nível de Abstração: Baixo nível (próximo ao hardware) ou alto nível (entidades abstratas).
- Metodologias: Imperativas, declarativas, orientadas a objetos ou mistas.
- Execução: Interpretadores (tradução durante a execução), compiladores (tradução prévia) ou ambientes de desenvolvimento (IDE).
Linguagem C
Desvantagens
- Falta de instruções nativas de E/S e manipulação de strings.
- Liberdade excessiva na escrita, facilitando erros sintáticos.
- Precedência de operadores complexa.
Características
- Programação estruturada.
- Economia de expressão.
- Codificação em alto e baixo nível.
- Substitui o Assembly com eficiência.
- Uso natural de funções primitivas do sistema.
- Produção de código objeto altamente otimizado.