O documento discute conceitos básicos de programação orientada a objetos em Java, incluindo classes, objetos, atributos, métodos e construtores. Também aborda tipos primitivos, membros de classe, encapsulamento e herança.
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
Material de Orientação a Objetos com Java objetivando auxiliar no aprendizado do paradigma e da linguagem Java, preparando o aluno para programar para Google Android
Os principais conceitos da programação orientada a objetos são: Classe, Objeto, Atributo, Método, Mensagem, Herança, Encapsulamento e Polimorfismo. A orientação a objetos modela o mundo real através destes conceitos, representando entidades como classes e seus estados e comportamentos como atributos e métodos.
O documento introduz conceitos fundamentais de API e JavaDoc. Explica o que é uma API, classe, objeto, estado, comportamento e métodos em Java. Também mostra como acessar a documentação da API do Java online e offline e dá exemplos práticos sobre a classe String.
O documento discute os principais conceitos da programação orientada a objetos, incluindo classes, objetos, herança, encapsulamento e polimorfismo. Define classe como um projeto do objeto e objeto como uma instância de uma classe. Explora como herança permite que classes herdem atributos e métodos de outras classes.
O documento apresenta os conceitos básicos de orientação a objetos, incluindo encapsulamento, herança, classes e objetos. Encapsulamento esconde detalhes internos de objetos, herança permite compartilhamento entre classes, classes definem atributos e métodos comuns a objetos, e objetos são instâncias de classes. O documento fornece exemplos de cada conceito e demonstra sua implementação em Java.
Este documento apresenta uma introdução aos conceitos fundamentais da programação orientada a objetos, como classes, atributos, métodos, herança e objetos. Explica que classes definem os tipos de objetos, atributos são variáveis dentro dos objetos e métodos são ações que os objetos podem realizar. Fornece um exemplo de como esses conceitos podem ser aplicados ao desenvolvimento de um sistema para uma locadora de filmes.
O documento apresenta os principais conceitos da programação orientada a objetos de acordo com a definição de Alan Kay, incluindo: (1) tudo é um objeto que troca mensagens; (2) classes definem tipos de objetos; (3) objetos são instâncias de classes com dados e comportamentos. Também aborda encapsulamento, herança, polimorfismo e ferramentas para ensinar POO como BlueJ e Greenfoot.
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
Material de Orientação a Objetos com Java objetivando auxiliar no aprendizado do paradigma e da linguagem Java, preparando o aluno para programar para Google Android
Os principais conceitos da programação orientada a objetos são: Classe, Objeto, Atributo, Método, Mensagem, Herança, Encapsulamento e Polimorfismo. A orientação a objetos modela o mundo real através destes conceitos, representando entidades como classes e seus estados e comportamentos como atributos e métodos.
O documento introduz conceitos fundamentais de API e JavaDoc. Explica o que é uma API, classe, objeto, estado, comportamento e métodos em Java. Também mostra como acessar a documentação da API do Java online e offline e dá exemplos práticos sobre a classe String.
O documento discute os principais conceitos da programação orientada a objetos, incluindo classes, objetos, herança, encapsulamento e polimorfismo. Define classe como um projeto do objeto e objeto como uma instância de uma classe. Explora como herança permite que classes herdem atributos e métodos de outras classes.
O documento apresenta os conceitos básicos de orientação a objetos, incluindo encapsulamento, herança, classes e objetos. Encapsulamento esconde detalhes internos de objetos, herança permite compartilhamento entre classes, classes definem atributos e métodos comuns a objetos, e objetos são instâncias de classes. O documento fornece exemplos de cada conceito e demonstra sua implementação em Java.
Este documento apresenta uma introdução aos conceitos fundamentais da programação orientada a objetos, como classes, atributos, métodos, herança e objetos. Explica que classes definem os tipos de objetos, atributos são variáveis dentro dos objetos e métodos são ações que os objetos podem realizar. Fornece um exemplo de como esses conceitos podem ser aplicados ao desenvolvimento de um sistema para uma locadora de filmes.
O documento apresenta os principais conceitos da programação orientada a objetos de acordo com a definição de Alan Kay, incluindo: (1) tudo é um objeto que troca mensagens; (2) classes definem tipos de objetos; (3) objetos são instâncias de classes com dados e comportamentos. Também aborda encapsulamento, herança, polimorfismo e ferramentas para ensinar POO como BlueJ e Greenfoot.
Este documento introduz a programação orientada a objetos e sua implementação em Java. Ele explica como a abordagem OO modela o mundo real em termos de objetos e classes, definindo atributos e métodos para representar características e comportamentos. Também descreve como classes criam objetos em Java e como esses objetos se comunicam através de mensagens.
1) O documento discute estruturas de dados como Map e Set em Java, incluindo suas principais implementações e métodos.
2) Map armazena pares chave-valor e não permite chaves duplicadas, enquanto Set armazena elementos únicos.
3) As principais implementações de Map incluem HashMap, TreeMap e LinkedHashMap, enquanto as principais implementações de Set incluem HashSet, TreeSet e LinkedHashSet.
O documento descreve conceitos fundamentais de estruturas de dados em Java, incluindo Map, Set, Stack, Queue, Threads e mais. Map e Set são coleções que armazenam pares chave-valor e conjuntos de objetos respectivamente. Stack e Queue gerenciam dados de acordo com os modelos LIFO e FIFO. Threads permitem a execução paralela de tarefas.
O documento resume uma aula de programação orientada a objetos com Java. Aborda laços aninhados, variáveis de classe, instância e constantes, e métodos, incluindo sobrecarga. Explica como definir cada um corretamente e exemplos de seu uso.
Este documento fornece uma introdução aos principais conceitos da programação orientada a objetos (POO) em Java, incluindo classe, objeto, método, herança, encapsulamento, abstração e polimorfismo. O documento também discute interfaces e como POO permite modelar o mundo real através de objetos que interagem entre si.
1. O documento introduz os conceitos básicos de programação orientada a objetos usando Java, incluindo classes, objetos, atributos, métodos, encapsulamento, herança e polimorfismo.
2. Os tópicos discutidos são classes vs objetos, atributos e métodos, encapsulamento, relacionamentos, herança e interfaces.
3. A herança permite que novas classes herdem atributos e métodos de outras classes, podendo modificar alguns membros e adicionar novos.
Programação Orientada a Objetos e alguns dos seus conceitos
Diferenças entre classes e objetos
Diferenças entre atributos e métodos de objeto de atributos e métodos de classe
Métodos
1) O documento discute estruturas de dados como Map e Set, métodos importantes como put(), get(), e implementações como HashMap e HashSet.
2) Map armazena dados em pares chave-valor e não permite chaves duplicadas, enquanto Set armazena elementos únicos sem ordenação.
3) Threads permitem executar tarefas simultaneamente através de métodos como start(), run(), sleep(), enquanto synchronized garante acesso exclusivo a recursos compartilhados.
O documento introduz os conceitos fundamentais de orientação a objetos, incluindo classes, objetos, atributos, métodos e herança. Classes definem objetos e seus atributos e métodos. Objetos são instâncias de classes. A herança permite que classes estendam atributos e métodos de outras classes.
O documento discute variáveis e métodos estáticos em Java, explicando que variáveis estáticas pertencem à classe ao invés de objetos e podem ser acessadas sem a necessidade de um objeto. Também aborda métodos estáticos, que são chamados através do nome da classe, e padrões de nomenclatura para variáveis, métodos e classes em Java.
Entenda o contexto da modelagem de software e sistemas, descubra a importância e as principais características da orientação a objetos, incluindo discussão de um case.
Este documento apresenta os conceitos básicos de programação orientada a objetos em Java. Aborda tópicos como classes, objetos, atributos, métodos, variáveis locais e globais. Inclui exemplos de como declarar classes, criar objetos, definir métodos e utilizar modificadores de acesso.
Este documento apresenta os principais conceitos da linguagem de programação Java, incluindo sua visão geral, por que é popular, como funciona, escolhendo uma IDE, escrevendo um "Hello World", sintaxe e semântica, tipos de dados, variáveis, operadores, vetores, matrizes, estruturas de controle, conceitos de programação orientada a objetos como classe, objeto, herança e polimorfismo. O documento também fornece referências para aprender mais sobre Java.
1) O curso aborda tópicos de programação Java como introdução à linguagem, uso de formulários, manipulação de arquivos e banco de dados.
2) Apresenta conceitos de programação orientada a objetos em Java incluindo classes, atributos, métodos, encapsulamento e herança.
3) Demonstra o uso de variáveis, vetores, condições, laços e métodos em programação Java.
Este documento apresenta uma introdução à linguagem de programação Python 2.7. Resume os principais pontos sobre a origem e criador da linguagem, suas características e tipos de dados suportados, como listas, dicionários, strings e números. Também explica brevemente sobre compilação versus interpretação e os operadores e métodos dos principais tipos de dados.
1) O documento apresenta os principais conceitos sobre variáveis, tipos primitivos, referências a objetos e matrizes na linguagem Java. 2) Inclui também uma explicação sobre classes, métodos, atributos, herança, polimorfismo, sobrecarga e outros pilares da programação orientada a objetos no Java. 3) Por fim, aborda tópicos como coletor de lixo, empacotadores, classe Math e outros recursos do framework Java.
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaWanderlei Silva do Carmo
Nesta apresentação procuro apresentar conceitos de orientação à objetos aplicados ao VBA. Procuro discorrer de forma simplificada sem uso de muitos jargões difíceis para que aqueles que estão iniciando agora em programação orientadas a objetos, sobretudo, aplicando ao VBA, em particular.
Espero que tenha ajudado e estou pronto para tirar dúvidas provindas da leitura deste documento.
Grande abraço a todos.
Wanderlei Silva do Carmo <wander.silva@gmail.com>
1) O documento discute técnicas de reutilização de código em Java, como composição e herança.
2) A herança permite criar novas classes estendendo classes existentes, heradando atributos e métodos.
3) O polimorfismo separa o que é feito do como é feito, definindo métodos com mesmo nome em classes diferentes.
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
O documento discute os conceitos de herança, polimorfismo e classes abstratas em orientação a objetos. A herança permite que classes herdem atributos e comportamentos de outras classes, evitando repetição de código. O polimorfismo acontece quando métodos são sobrescritos em subclasses, permitindo tratá-las de forma genérica. Classes abstratas definem interfaces comuns para subclasses concretas, podendo conter métodos abstratos para implementação nas mesmas.
Aqui são apresentados conceitos básicos a plataforma Java. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Este documento fornece um resumo dos principais conceitos de programação orientada a objetos em Java, incluindo:
(1) Conceitos como classe, objeto, atributo, método e interface;
(2) Características da OO como abstração, encapsulamento, herança e polimorfismo;
(3) Sintaxe Java para construção de classes e objetos.
Este documento introduz a programação orientada a objetos e sua implementação em Java. Ele explica como a abordagem OO modela o mundo real em termos de objetos e classes, definindo atributos e métodos para representar características e comportamentos. Também descreve como classes criam objetos em Java e como esses objetos se comunicam através de mensagens.
1) O documento discute estruturas de dados como Map e Set em Java, incluindo suas principais implementações e métodos.
2) Map armazena pares chave-valor e não permite chaves duplicadas, enquanto Set armazena elementos únicos.
3) As principais implementações de Map incluem HashMap, TreeMap e LinkedHashMap, enquanto as principais implementações de Set incluem HashSet, TreeSet e LinkedHashSet.
O documento descreve conceitos fundamentais de estruturas de dados em Java, incluindo Map, Set, Stack, Queue, Threads e mais. Map e Set são coleções que armazenam pares chave-valor e conjuntos de objetos respectivamente. Stack e Queue gerenciam dados de acordo com os modelos LIFO e FIFO. Threads permitem a execução paralela de tarefas.
O documento resume uma aula de programação orientada a objetos com Java. Aborda laços aninhados, variáveis de classe, instância e constantes, e métodos, incluindo sobrecarga. Explica como definir cada um corretamente e exemplos de seu uso.
Este documento fornece uma introdução aos principais conceitos da programação orientada a objetos (POO) em Java, incluindo classe, objeto, método, herança, encapsulamento, abstração e polimorfismo. O documento também discute interfaces e como POO permite modelar o mundo real através de objetos que interagem entre si.
1. O documento introduz os conceitos básicos de programação orientada a objetos usando Java, incluindo classes, objetos, atributos, métodos, encapsulamento, herança e polimorfismo.
2. Os tópicos discutidos são classes vs objetos, atributos e métodos, encapsulamento, relacionamentos, herança e interfaces.
3. A herança permite que novas classes herdem atributos e métodos de outras classes, podendo modificar alguns membros e adicionar novos.
Programação Orientada a Objetos e alguns dos seus conceitos
Diferenças entre classes e objetos
Diferenças entre atributos e métodos de objeto de atributos e métodos de classe
Métodos
1) O documento discute estruturas de dados como Map e Set, métodos importantes como put(), get(), e implementações como HashMap e HashSet.
2) Map armazena dados em pares chave-valor e não permite chaves duplicadas, enquanto Set armazena elementos únicos sem ordenação.
3) Threads permitem executar tarefas simultaneamente através de métodos como start(), run(), sleep(), enquanto synchronized garante acesso exclusivo a recursos compartilhados.
O documento introduz os conceitos fundamentais de orientação a objetos, incluindo classes, objetos, atributos, métodos e herança. Classes definem objetos e seus atributos e métodos. Objetos são instâncias de classes. A herança permite que classes estendam atributos e métodos de outras classes.
O documento discute variáveis e métodos estáticos em Java, explicando que variáveis estáticas pertencem à classe ao invés de objetos e podem ser acessadas sem a necessidade de um objeto. Também aborda métodos estáticos, que são chamados através do nome da classe, e padrões de nomenclatura para variáveis, métodos e classes em Java.
Entenda o contexto da modelagem de software e sistemas, descubra a importância e as principais características da orientação a objetos, incluindo discussão de um case.
Este documento apresenta os conceitos básicos de programação orientada a objetos em Java. Aborda tópicos como classes, objetos, atributos, métodos, variáveis locais e globais. Inclui exemplos de como declarar classes, criar objetos, definir métodos e utilizar modificadores de acesso.
Este documento apresenta os principais conceitos da linguagem de programação Java, incluindo sua visão geral, por que é popular, como funciona, escolhendo uma IDE, escrevendo um "Hello World", sintaxe e semântica, tipos de dados, variáveis, operadores, vetores, matrizes, estruturas de controle, conceitos de programação orientada a objetos como classe, objeto, herança e polimorfismo. O documento também fornece referências para aprender mais sobre Java.
1) O curso aborda tópicos de programação Java como introdução à linguagem, uso de formulários, manipulação de arquivos e banco de dados.
2) Apresenta conceitos de programação orientada a objetos em Java incluindo classes, atributos, métodos, encapsulamento e herança.
3) Demonstra o uso de variáveis, vetores, condições, laços e métodos em programação Java.
Este documento apresenta uma introdução à linguagem de programação Python 2.7. Resume os principais pontos sobre a origem e criador da linguagem, suas características e tipos de dados suportados, como listas, dicionários, strings e números. Também explica brevemente sobre compilação versus interpretação e os operadores e métodos dos principais tipos de dados.
1) O documento apresenta os principais conceitos sobre variáveis, tipos primitivos, referências a objetos e matrizes na linguagem Java. 2) Inclui também uma explicação sobre classes, métodos, atributos, herança, polimorfismo, sobrecarga e outros pilares da programação orientada a objetos no Java. 3) Por fim, aborda tópicos como coletor de lixo, empacotadores, classe Math e outros recursos do framework Java.
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaWanderlei Silva do Carmo
Nesta apresentação procuro apresentar conceitos de orientação à objetos aplicados ao VBA. Procuro discorrer de forma simplificada sem uso de muitos jargões difíceis para que aqueles que estão iniciando agora em programação orientadas a objetos, sobretudo, aplicando ao VBA, em particular.
Espero que tenha ajudado e estou pronto para tirar dúvidas provindas da leitura deste documento.
Grande abraço a todos.
Wanderlei Silva do Carmo <wander.silva@gmail.com>
1) O documento discute técnicas de reutilização de código em Java, como composição e herança.
2) A herança permite criar novas classes estendendo classes existentes, heradando atributos e métodos.
3) O polimorfismo separa o que é feito do como é feito, definindo métodos com mesmo nome em classes diferentes.
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
O documento discute os conceitos de herança, polimorfismo e classes abstratas em orientação a objetos. A herança permite que classes herdem atributos e comportamentos de outras classes, evitando repetição de código. O polimorfismo acontece quando métodos são sobrescritos em subclasses, permitindo tratá-las de forma genérica. Classes abstratas definem interfaces comuns para subclasses concretas, podendo conter métodos abstratos para implementação nas mesmas.
Aqui são apresentados conceitos básicos a plataforma Java. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Este documento fornece um resumo dos principais conceitos de programação orientada a objetos em Java, incluindo:
(1) Conceitos como classe, objeto, atributo, método e interface;
(2) Características da OO como abstração, encapsulamento, herança e polimorfismo;
(3) Sintaxe Java para construção de classes e objetos.
Python é uma linguagem de programação interpretada, dinamicamente tipada e com gerenciamento automático de memória. Foi criada por Guido van Rossum e é amplamente utilizada no desenvolvimento web, ciência de dados e machine learning. Python tem uma biblioteca padrão extensa e comunidades ativas de desenvolvedores.
O documento descreve o modelo orientado a objetos, incluindo sua definição, onde é usado, exemplos de diagramas, e vantagens e desvantagens. Ele fornece detalhes sobre como objetos representam entidades do mundo real com estados e comportamentos, e como são organizados em classes hierárquicas. Exemplos de sistemas de gerenciamento de banco de dados orientados a objetos comerciais e de código aberto são listados, juntamente com suas linguagens suportadas.
1) O documento apresenta fundamentos da programação orientada a objetos em Java, incluindo classes, atributos, métodos, herança, abstração e encapsulamento.
2) A programação orientada a objetos modela sistemas como coleções de objetos que cooperam através de mensagens, ao contrário da programação estruturada que se concentra em funções.
3) Classes descrevem os dados e comportamentos de objetos através de atributos e métodos.
O documento discute programação orientada a objetos em Python. Ele explica conceitos básicos como classes, objetos, métodos e atributos. Também descreve como definir classes em Python e criar instâncias de objetos, incluindo o uso do método especial __init__().
O documento apresenta os conceitos fundamentais de programação orientada a objetos, incluindo classe, objeto, atributos, métodos e comunicação entre objetos. É feita uma introdução ao paradigma OO e apresentado um exemplo de sistema OO para controle de mídias. Também são explicados conceitos como modelagem conceitual, classes em Java e exercício proposto de criação de classe Conta Bancária.
1. O documento resume os principais conceitos de Java, incluindo classes, métodos, variáveis, tipos, herança, polimorfismo, coleções e design de código.
2. Inclui explicações sobre orientação a objetos, testes unitários com JUnit, e padrões como GRASP e composição vs herança.
3. Fornece um guia geral sobre Java com foco em conceitos básicos de programação orientada a objetos.
A linguagem Python foi criada por Guido van Rossum em 1989 para facilitar o ensino e uso da programação. Python é uma linguagem de programação interpretada, dinamicamente tipada e multiplataforma projetada para ser simples e fácil de ler. Sua biblioteca padrão contém diversos recursos úteis para desenvolvimento de aplicações.
O documento discute a linguagem de programação Java e programação orientada a objetos. Apresenta Java como uma linguagem rápida, segura e confiável usada em muitos aplicativos e sites. Explora os conceitos de programação orientada a objetos como classes, atributos, métodos e como objetos interagem. Define objetos, classes, atributos e métodos como elementos centrais da programação orientada a objetos.
O documento descreve as principais características da linguagem Python, incluindo sua filosofia orientada a objetos e funcional, construções, tipos de dados, operadores, compilador, tratamento de exceções e biblioteca padrão extensa. Um ponto importante é o poema "The Zen of Python" que resume a filosofia da linguagem de forma concisa.
O documento discute os bancos de dados orientados a objetos (BDOO), que oferecem maior flexibilidade na criação e manipulação de tipos de dados complexos requeridos por aplicações avançadas. Os BDOOs armazenam objetos persistentes que podem ser compartilhados entre programas, preservando sua integridade através de identificadores únicos. Eles também suportam características como herança e polimorfismo que permitem a reutilização e especialização de objetos.
O documento descreve o histórico e conceitos fundamentais do paradigma de programação orientada a objetos. Em 3 frases:
1) A programação orientada a objetos surgiu nos anos 1960 com as linguagens Simula e Smalltalk e se popularizou nas décadas seguintes com C++ e Java.
2) Os conceitos fundamentais incluem objetos, classes, encapsulamento, herança, polimorfismo e mensagens para comunicação entre objetos.
3) A orientação a objetos traz vantagens como reutilização de código, extensibilidade
O documento discute os conceitos fundamentais de programação orientada a objetos em Java, incluindo classes, objetos, membros de classe e instância. Ele explica que classes definem tipos de dados complexos que podem ser usados para criar objetos, e que objetos são instâncias de classes que armazenam dados e executam operações.
Este documento apresenta uma introdução à linguagem de programação Python. Ele discute as características e implementações da linguagem, tipos de dados como números, strings e listas, e conceitos como variáveis, funções, orientação a objetos e módulos. O documento é dividido em três partes cobrindo tópicos como apresentação, introdução e detalhes da linguagem.
O documento resume os principais conceitos da programação orientada a objetos, incluindo:
1) Classes, objetos, métodos e mensagens;
2) Modelagem orientada a objetos usando a UML, como diagramas de classe e sequência;
3) Vantagens da OO como reutilização e manutenção, e desvantagens como tempo de desenvolvimento.
A ActionScript 3.0 é a linguagem de programação do Adobe Flash usada para desenvolver projetos interativos para web, desktop e mobile, suportando programação orientada a objetos. Ela é executada na máquina virtual Flash Player/Adobe AIR e possui recursos para animação, mídia, controle de eventos e fluxo.
1. Diagramas de classes descrevem o modelo geral de informação de um sistema, representando classes, objetos, atributos, operações e relacionamentos.
2. Uma classe representa uma abstração sobre objetos com estrutura e comportamento comuns, enquanto um objeto é uma instância de uma classe.
3. Diagramas de classes servem para compreender o mundo real relevante para o sistema e fornecer uma base para implementação.
Este documento fornece uma introdução à linguagem Ruby e ao framework Ruby on Rails. Apresenta os principais conceitos da linguagem Ruby como tipos de dados, estruturas de controle, orientação a objetos e metaprogramação. Também discute brevemente a história e arquitetura MVC do Rails.
Este documento fornece uma introdução aos conceitos fundamentais da programação orientada a objetos, incluindo: 1) O que é OO e suas vantagens em relação às técnicas tradicionais de programação; 2) Os conceitos-chave de objeto, classe, mensagem, abstração, encapsulamento, herança e polimorfismo.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
Em determinadas ocasiões, dependendo dos requisitos de uma aplicação, pode ser preciso percorrer todos os elementos de uma árvore para, por exemplo, exibir todo o seu conteúdo ao usuário. De acordo com a ordem de visitação dos nós, o usuário pode ter visões distintas de uma mesma árvore.
Imagine que, para percorrer uma árvore, tomemos o nó raiz como nó inicial e, a partir dele, comecemos a visitar todos os nós adjacentes a ele para, só então, começar a investigar os outros nós da árvore. Por outro lado, imagine que tomamos um nó folha como ponto de partida e caminhemos em direção à raiz, visitando apenas o ramo da árvore que leva o nó folha à raiz. São maneiras distintas de se visualizar a mesma árvore.
Tome a árvore binária a seguir como base para realizar percursos que partirão sempre da raiz (nó 1).
Figura 1 - Árvore binária
Fonte: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019. p. .
Com base na árvore anterior, responda quais seriam as ordens de visitação, partindo da raiz:
a) Percorrendo a árvore pelo algoritmo Pré-Ordem.
b) Percorrendo a árvore pelo algoritmo Em-Ordem.
c) Percorrendo a árvore pelo algoritmo Pós-Ordem.
Obs.: como resposta, informar apenas os caminhos percorridos em cada Situação:
a) Pré-ordem: X - Y - Z.
b) Em-ordem: X - Y - Z.
c) Pós-ordem: X - Y - Z.
ATENÇÃO!
- Você poderá elaborar sua resposta em um arquivo de texto .txt e, após revisado, copiar e colar no campo destinado à resposta na própria atividade em seu STUDEO.
- Plágios e cópias indevidas serão penalizados com nota zero.
- As perguntas devem ser respondidas de forma adequada, ou seja, precisam ser coerentes.
- Antes de enviar sua atividade, certifique-se de que respondeu todas as perguntas e não se esqueceu nenhum detalhe. Após o envio, não são permitidas alterações. Por favor, não insista.
- Não são permitidas correções parciais no decorrer do módulo, isso invalida seu processo avaliativo. A interpretação da atividade faz parte da avaliação.
- Atenção ao prazo de entrega da atividade. Sugerimos que envie sua atividade antes do prazo final para evitar transtornos e lentidão nos servidores. Evite o envio de atividade em cima do prazo.
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
1. Java 2 Standard Edition
Programação
orientada a objetos
em Java
Helder da Rocha
www.argonavis.com.br
1
2. Assuntos abordados neste módulo
Conceitos de programação orientada a objetos existentes na
sintaxe da linguagem Java
Artefatos: pacote, classe, objeto, membro, atributo, método,
construtor e interface
Características OO em Java: abstração, encapsulamento, herança e
polimorfismo
Sintaxe Java para construção de estruturas de dados
Tipos de dados primitivos
Componentes de uma classe
Construção de aplicações simples em Java
Como construir uma classe Java (um tipo de dados) contendo
métodos, atributos e construtores
Como construir e usar objetos
Este módulo é longo e aborda muitos assuntos que serão
tratados novamente em módulos posteriores
2
3. Por que OO é importante?
Java é uma linguagem orientada a objetos
Para desenvolver aplicações e componentes de
qualidade em Java é preciso entender e saber aplicar
princípios de orientação a objetos ao programar
É possível escrever programas em Java sem saber
usar os recursos da OO, mas
Dificilmente você será capaz de ir além de programas
simples com mais de uma classe
Será muito difícil entender outros programas
Seu código será feio, difícil de depurar e de reutilizar
Você estará perdendo ao usar uma linguagem como Java
(se quiser implementar apenas rotinas procedurais pode usar uma
linguagem melhor para a tarefa como Shell, Fortran, etc.)
3
4. O que é Orientação a objetos
Paradigma do momento na engenharia de software
Afeta análise, projeto (design) e programação
A análise orientada a objetos
Determina o que o sistema deve fazer: Quais os atores
envolvidos? Quais as atividades a serem realizadas?
Decompõe o sistema em objetos: Quais são? Que tarefas
cada objeto terá que fazer?
O design orientado a objetos
Define como o sistema será implementado
Modela os relacionamentos entre os objetos e atores
(pode-se usar uma linguagem específica como UML)
Utiliza e reutiliza abstrações como classes, objetos,
funções, frameworks, APIs, padrões de projeto
4
5. Abstração de casos de uso em
(1) análise OO e (2) análise procedural
Sistema de Biblioteca
Adicionar
Bibliotecário livros
Pesquisar Usuário
Catálogo
(1) Trabalha no espaço do (2) Trabalha no espaço da solução
problema (casos de uso (casos de uso decompostos em
simplificados em objetos) procedimentos algorítmicos)
– Abstrações mais simples e – Abstrações mais próximas do
mais próximas do mundo real mundo do computador
Biblioteca Lógica procedural
encapsulada em Sistema de Biblioteca
Catálogo
objetos pequenos
Livro
Livro Adicionar Livros Pesquisar Catalogo
Autor
Autor
Livro Lógica exposta e
Autor
Autor espalhada por
todo o sistema
5
6. O que é um objeto?
Objetos são conceitos que têm
identidade,
estado e
comportamento
Características de Smalltalk, resumidas por Allan Kay:
Tudo (em um programa OO) são objetos
Um programa é um monte de objetos enviando
mensagens uns aos outros
O espaço (na memória) ocupado por um objeto consiste
de outros objetos
Todo objeto possui um tipo (que descreve seus dados)
Objetos de um determinado tipo podem receber as
mesmas mensagens
6
7. Ou seja...
Em uma linguagem OO pura
Uma variável é um objeto
Um programa é um objeto
Um procedimento é um objeto
Um objeto é composto de objetos, portanto
Um programa (objeto) pode ter variáveis (objetos que
representam seu estado) e procedimentos (objetos que
representam seu comportamento)
Analogia: abstração de um telefone celular
É composto de outros objetos, entre eles bateria e botões
A bateria é um objeto também, que possui pelo menos um
outro objeto: carga, que representa seu estado
Os botões implementam comportamentos
7
8. Objetos (2)
Em uma linguagem orientada a objetos pura
Um número, uma letra, uma palavra, uma valor booleano,
uma data, um registro, uma botão da GUI são objetos
Em Java, objetos são armazenados na memória de
heap e manipulados através de uma referência
(variável), guardada na pilha. Pilha
0010
Heap
5
Têm estado (seus atributos) ref 001A 001A
Têm comportamento (seus métodos) 23
001F
Têm identidade (a referência)
Valores unidimensionais não são objetos em Java
Números, booleanos, caracteres são armazenados na pilha
Têm apenas identidade (nome da variável) e estado (valor
literal armazenado na variável); - dinâmicos; + rápidos
8
9. Variáveis, valores e referências
Variáveis são usadas em linguagens em geral para
armazenar valores
Em Java, variáveis podem armazenar endereços de
memória do heap ou valores atômicos de tamanho fixo
Endereços de memória (referências) são inaccessíveis aos
programadores (Java não suporta aritmética de ponteiros!)
Valores atômicos representam tipos de dados primitivos
Valores são passados para variáveis através de
operações de atribuição
Atribuição de valores é feita através de literais
Atribuição de referências (endereços para valores) é feita
através de operações de construção de objetos e, em dois
casos, pode ser feita através de literais
9
10. Literais e tipos
Tipos representam um valor, uma coleção de valores
ou coleção de outros tipos. Podem ser
Tipos básicos, ou primitivos, quando representam unidades
indivisíveis de informação de tamanho fixo
Tipos complexos, quando representam informações que
podem ser decompostas em tipos menores. Os tipos
menores podem ser primitivos ou outros tipos complexos
Literais: são valores representáveis literalmente.
Números: 1, 3.14, 1.6e-23 Unidimensionais
Valores booleanos: true e false
Caracteres individuais: 'a', 'u0041', 'n') Compostos
Seqüências de caracteres: "aaa", "Java"
Vetores de números, booleanos ou strings: {"a", "b"}
10
11. Tipos primitivos e complexos
Exemplos de tipos primitivos (atômicos)
Um inteiro ou um caractere,
Um literal booleano (true ou false)
Exemplos de tipos complexos
Uma data: pode ser decomposta em três inteiros,
representando dia, mês e ano
Um vetor de inteiros: pode ser decomposto em suas partes
Uma seqüência de caracteres: pode ser decomposta nos
caracteres que a formam
Em Java, tipos complexos são armazenados como
objetos e tipos primitivos são guardados na pilha
Apesar de serem objetos, seqüências de caracteres
(strings) em Java podem ser representadas literalmente.
11
12. Tipos primitivos em Java
Têm tamanho fixo. Têm sempre valor default.
Armazenados na pilha (acesso rápido)
Não são objetos. Classe 'wrapper ' faz transformação, se
necessário (encapsula valor em um objeto).
Tipo Tamanho Mínimo Máximo Default 'Wrapper'
boolean — — — false Boolean
char 16-bit Unicode 0 Unicode 216 - 1 u0000 Character
byte 8-bit -128 +127 0 Byte
short 16-bit -215 +215 —1 0 Short
int 32-bit -231 +231 —1 0 Integer
long 64-bit -263 +263 —1 0 Long
float 32-bit IEEE754 IEEE754 0.0 Float
double 64-bit IEEE754 IEEE754 0.0 Double
void — — — — Void
12
13. Exemplos de tipos primitivos e literais
Literais de caracter:
char c = 'a';
char z = 'u0041'; // em Unicode
Literais inteiros
int i = 10; short s = 15; byte b = 1;
long hexa = 0x9af0L; int octal = 0633;
Literais de ponto-flutuante
float f = 123.0f;
double d = 12.3;
double g = .1e-23;
Literais booleanos
boolean v = true;
boolean f = false;
Literais de string (não é tipo primitivo - s é uma referência)
String s = "abcde";
Literais de vetor (não é tipo primitivo - v é uma referência)
int[] v = {5, 6};
13
14. O que é uma classe?
Classes são uma especificação para objetos
Uma classe representa um tipo de dados complexo
Classes descrevem
Tipos dos dados que compõem o objeto (o que podem armazenar)
Procedimentos que o objeto pode executar (o que podem fazer)
Instâncias da classe Casa (objetos)
Classe Casa c1 = new Casa();
c1.numero = 12;
Casa 12
c1.cor = Color.yellow;
Casa c2 = new Casa();
boolean abrePorta() {} c2.numero = 56;
56
int numero c2.cor = Color.red;
Color cor
static String arquiteto Casa c3 = new Casa();
c3.numero = 72;
72 c3.cor = Color.white;
c3.abrePorta();
14
15. Ou seja...
Classes não são os objetos que representam
A planta de uma casa é um objeto, mas não é uma casa
Classes definem lógica estática
Relacionamentos entre classes são definidos na
programação e não mudam durante a execução
Relacionamentos entre objetos são dinâmicos e podem
mudar. O funcionamento da aplicação reflete a lógica de
relacionamento entre os objetos, e não entre as classes.
Classes não existem no contexto da execução
Uma classe representa vários objetos que ocupam espaço
na memória, mas ela não existe nesse domínio
A classe tem papel na criação dos objetos, mas não existe
quando os objetos trocam mensagens entre si.
15
16. Resumo
Objetos são conceitos que têm estado (atributos),
comportamento (métodos) e identidade (referência)
Tipos representam valores
Primitivos: valores fixos e indivisíveis. São armazenados na pilha
Complexos: valores multidimensionais que podem ser
decompostos em componentes menores. Descrevem objetos que
são armazenados no heap
Literais
Usados para definir tipos primitivos ou certos tipos complexos
formados por componentes iguais (strings e vetores)
Variáveis podem armazenar valores de tipos primitivos ou
referências para objetos
Classes são tipos complexos: descrevem objetos
Não são importantes no contexto da execução
16
17. Membros: atributos e métodos
Uma classe define uma estrutura de dados não-ordenada
Pode conter componentes em qualquer ordem
Os componentes de uma classe são seus membros
Uma classe pode conter três tipos de componentes
Membros estáticos ou de classe: não fazem parte do "tipo"
Membros de instância: definem o tipo de um objeto
Procedimentos de inicialização
Membros estáticos ou de classe
Podem ser usados através da classe mesmo quando não há objetos
Não se replicam quando novos objetos são criados
Membros de instância
Cada objeto, quando criado, aloca espaço para eles
Só podem ser usados através de objetos
Procedimentos de inicialização
Usados para inicializar objetos ou classes
17
18. Exemplo
public class Casa { Atributos de instância: cada
objeto poderá armazenar valores
private Porta porta;
private int numero; diferentes nessas variáveis.
public java.awt.Color cor; Procedimento de inicialização de
objetos (Construtor): código é
public Casa() {
executado após a criação de cada
Tipo porta = new Porta();
numero = ++contagem * 10; novo objeto. Cada objeto terá um
} número diferente.
Método de instância: só é possível
public void abrePorta() {
porta.abre();
chamá-lo se for através de um
} objeto.
Atributos estáticos: não é preciso
public static String arquiteto = "Zé";
criar objetos para usá-los. Todos
private static int contagem = 0;
os objetos os compartilham.
static { Procedimento de inicialização
if ( condição ) { estático: código é executado uma
arquiteto = "Og";
}
única vez, quando a classe é
} carregada. O arquiteto será um só
} para todas as casas: ou Zé ou Og. 18
19. Boas práticas ao escrever classes
Use, e abuse, dos espaços
Endente, com um tab ou 4 espaços, membros da classe,
Endente com 2 tabs, o conteúdo dos membros, ...
A ordem dos membros não é importante, mas seguir
convenções melhora a legibilidade do código
Mantenha os membros do mesmo tipo juntos (não
misture métodos estáticos com métodos de instância)
Declare as variáveis antes ou depois dos métodos (não
misture métodos, construtores e variáveis)
Mantenha os seus construtores juntos, de preferência
bem no início
Se for necessário definir blocos static, defina apenas um,
e coloque-o no início ou no final da classe.
19
20. Construtores
Construtores são procedimentos realizados na
construção de objetos
Parecem métodos, mas não têm tipo de retorno e têm
nome idêntico ao nome da classe
Não fazem parte da definição do tipo do objeto (interface)
Nem sempre aparecem explícitos em uma classe: podem
ser omitidos (o sistema oferece uma implementação default)
Para cada objeto, o construtor é chamado
exatamente uma vez: na sua criação
Chamada de
Exemplo:
construtor
> Objeto obj = new Objeto();
Alguns podem requerer parâmetros
> Objeto obj = new Objeto(35, "Nome");
20
21. Objetos possuem uma interface ...
Através da interface* é possível utilizá-lo
Não é preciso saber dos detalhes da implementação
O tipo (Classe) de um objeto determina sua interface
O tipo determina quais mensagens podem ser enviadas
CDPlayer
Em Java
Tipo
(...) Classe Java (tipo)
liga()
desliga() CDPlayer cd1; Referência
Interface
selecionaFaixa(int) cd1 = new CDPlayer();
Formato das avança()
mensagens retorna() cd1.liga(); Criação de objeto
que se pode executa() cd1.selecionaFaixa(3);
enviar para pausa() cd1.executa();
um objeto para() (...) Envio de mensagem
* interface aqui refere-se a um conceito e não a um tipo de classe Java 21
22. ... e uma implementação (oculta)
Implementação não interessa à quem usa objetos
Papel do usuário de classes
não precisa saber como a classe foi escrita, apenas quais
seus métodos, quais os parâmetros (quantidade, ordem e
tipo) e valores que são retornados
usa apenas a interface (pública) da classe
Papel do desenvolvedor de classes
define novos tipos de dados
expõe, através de métodos, todas as funções necessárias
ao usuário de classes, e oculta o resto da implementação
tem a liberdade de mudar a implementação das classes
que cria sem que isto comprometa as aplicações
desenvolvidas pelo usuário de classes
22
23. Resumo
Os componentes de uma classe, em Java, podem pertencer a
dois domínios, que determinam como são usados
Domínio da classe: existem independentemente de existirem
objetos ou não: métodos static, blocos static, atributos static
e interface dos construtores de objetos
Domínio do objeto: métodos e atributos não declarados como
static (definem o tipo ou interface que um objeto possui), e
conteúdo dos construtores
Construtores são usados apenas para construir objetos
Não são métodos (não declaram tipo de retorno)
"Ponte" entre dois domínios: são chamados uma vez antes do objeto
existir (domínio da classe) e executados no domínio do objeto criado
Separação de interface e implementação
Usuários de classes vêem apenas a interface.
Implementação é encapsulada dentro dos métodos, e pode variar sem
afetar classes que usam os objetos 23
24. Reuso de implementação
Separação interface-implementação: maior reuso
Reuso depende de bom planejamento e design
Uma vez criada uma classe, ela deve representar uma
unidade de código útil para que seja reutilizável
Formas de uso e reuso
Uso e reuso de objetos criados pela classe: mais flexível
Composição: a “é parte essencial de” b b a *
Agregação: a “é parte de” b b a
Associação: a “é usado por” b b a
Reuso da interface da classe: pouco flexível
Herança: b “é” a (substituição pura) b a
ou b “é um tipo de” a (substituição útil, extensão)
* Notação UML 24
25. Agregação, composição e associação
Composição: um trem é formado por locomotiva e vagões
1
Locomotiva
Trem
1..* Vagão
Agregação: uma locomotiva tem um farol (mas não vai
deixar de ser uma locomotiva se não o tiver)
Locomotiva Farol
Associação: um trem usa uma estrada de ferro (não faz parte
do trem, mas ele depende dela)
Trem EstradaDeFerro
usa
25
26. Herança (reuso de interface)
Um carro é um veículo
Veículo representação
UML
Carro
Fuscas e Porsches são carros (e também veículos)
representação
Veículo Veículo
UML simplificada
(não mostra os getVelocidade():float
métodos) getPassageiros():int
Carro acelera()
freia()
representação UML
Fusca Porsche
detalhada de ‘Veículo’
26
27. Extensão e sobreposição
Extensão
Acrescenta novos Veículo
métodos aos já herdados Veículo getVelocidade():float
(Um objeto do tipo getPassageiros():int
Carro tem mais métodos acelera()
Carro
que um objeto do tipo freia()
abastece()
Veiculo) fechaPorta()
abrePorta()
Sobreposição
Carro
Redefine os métodos
implementados
Fusca Porsche previamente (Um objeto do
abrePorta() freia() tipo Fusca tem o mesmo
getVelocidade() número de métodos de um
objeto do tipo Carro
27
28. Polimorfismo
Uso de um objeto no lugar de outro
pode-se escrever código que não dependa da existência
prévia de tipos específicos
Ligação da interface
Desenhista «usa» Figura com o objeto real
pode ser feita durante
geraFigura() desenha() a execução
Conhece apenas interface
do tipo genérico (Figura)
Círculo Quadrado Triângulo
Chama "desenha()" sem desenha() desenha() desenha()
saber qual objeto será
desenhado. Objeto real
pode ser "plugado"
durante a execução. Cada desenha() sobrepõe funcionamento
original com algo diferente
28
29. Encapsulamento
Simplifica o objeto expondo apenas a sua interface
essencial
Código dentro de métodos é naturalmente encapsulado
Não é possível acessar interior de um método fora do objeto
Métodos que não devem ser usados externamente e
atributos podem ter seu nível de acesso controlado em
Java, através de modificadores
private: apenas acesso dentro da classe
package-private (default): acesso dentro do pacote*
protected: acesso em subclasses
public: acesso global
* não existe um modificador com este nome. A ausência de um
modificador de acesso deixa o membro com acesso package-private 29
30. Resumo de características OO
Abstração de conceitos
Classes, definem um tipo separando interface de implementação
Objetos: instâncias utilizáveis de uma classe
Herança: "é um"
Aproveitamento do código na formação de hierarquias de classes
Fixada na compilação (inflexível)
Associação "tem um"
Consiste na delegação de operações a outros objetos
Pode ter comportamento e estrutura alterados durante execução
Vários níveis de acoplamento: associação, composição, agregação
Encapsulamento
Separação de interface e implementação que permite que usuários
de objetos possam utilizá-los sem conhecer detalhes de seu código
Polimorfismo
Permite que objeto seja usado no lugar de outro
30
31. Exercício
1. Crie, e compile as seguintes classes
Uma Pessoa tem um nome (String)
Uma Porta tem um estado aberto, que pode ser true ou
false, e pode ser aberta ou fechada
Uma Construcao tem uma finalidade
Uma Casa é uma Construcao com finalidade residencial
que tem um proprietário Pessoa, um número e um
conjunto (vetor) de Portas
2. Crie as seguintes classes
Um Ponto tem coordenadas x e y inteiras
Um Circulo tem um Ponto e um raio inteiro
Um Pixel é um tipo de Ponto que possui uma cor
31
32. Menor classe utilizável em Java
Uma classe contém a representação de um objeto
define seus métodos (comportamento)
define os tipos de dados que o objeto pode armazenar
(estado)
determina como o objeto deve ser criado (construtor)
Uma classe Java também pode conter
procedimentos independentes (métodos ‘static’)
variáveis estáticas
rotinas de inicialização (blocos ‘static’)
O programa abaixo é a menor unidade compilável
em Java class Menor {}
32
33. Símbolos essenciais
Separadores
{ ... } chaves: contém as partes de uma classe e delimitam blocos de
instruções (em métodos, inicializadores, estruturas de controle, etc.)
; ponto-e-vírgula: obrigatória no final de toda instrução simples ou
declaração
Identificadores
Nomes usados para representar classes, métodos, variáveis (por
exemplo: desenha, Casa, abrePorta, Circulo, raio)
Podem conter letras (Unicode) e números, mas não podem começar
com número
Palavras reservadas
São 52 (assert foi incluída na versão 1.4.0) e consistem de 49
palavras-chave e literais true, false e null.
Exemplos de palavras-chave são public, int, class, for e void
A maior parte dos editores de código Java destaca as palavras
reservadas
33
34. Para que serve uma classe
Uma classe pode ser usada para
conter a rotina de execução principal de uma aplicação
iniciada pelo sistema operacional (método main)
conter funções globais (métodos estáticos)
conter constantes e variáveis globais (campos de dados
estáticos)
especificar e criar objetos (contém construtores, métodos
e atributos de dados)
34
35. Uma unidade de compilação
Casa.java
package cidade; // classe faz parte do pacote cidade
import cidade.ruas.*; // usa todas as classes de pacote
import pais.terrenos.LoteUrbano; // usa classe LoteUrbano
import Pessoa; // ilegal desde Java 1.4.0
import java.util.*; // usa classes de pacote Java
class Garagem {
... Por causa da declaração ‘package’
} o nome completo destas classes é
cidade.Garagem
interface Fachada { cidade.Fachada e
... cidade.Casa
}
/** Classe principal */ Este arquivo, ao ser
public class Casa { compilado, irá gerar
... três arquivos .class
}
35
36. O que pode conter uma classe
Um bloco ‘class’ pode conter (entre as chaves {...}), em
qualquer ordem
(1) zero ou mais declarações de atributos de dados
(2) zero ou mais definições de métodos
(3) zero ou mais construtores
(4) zero ou mais blocos de inicialização static
(5) zero ou mais definições de classes ou interfaces
internas
Esses elementos só podem ocorrer dentro do bloco ‘class
NomeDaClasse { ... }’
tudo, em Java, ‘pertence’ a alguma classe
apenas ‘import’ e ‘package’ podem ocorrer fora de uma
declaração ‘class’ (ou ‘interface’)
36
37. Métodos
Contém procedimentos - instruções simples ou compostas executadas
em seqüência - entre chaves
Podem conter argumentos
O tipo de cada argumento precisa ser declarado
Método é identificado pelo nome + número e tipo de argumentos
Possuem um tipo de retorno ou a palavra void
Podem ter modificadores (public, static, etc.) antes do tipo
... class T2 {
public void paint (Graphics g){ int x, y;
int x = 10; public int soma () {
g.drawString(x, x*2, "Booo!"); return x + y;
} }
... public static int soma(int a, int b){
return a + b;
}
class T1 {
private int a; private int b; public static int soma(int a,
public int soma () { int b, int c){
return a + b; return soma(soma(a, b), c);
} }
} }
37
38. Sintaxe de definição de métodos
Sintaxe básica
[mod]* tipo identificador ( [tipo arg]* ) [throws exceção*] { ... }
Chave
[mod]* – zero ou mais modificadores separados por espaços
tipo – tipo de dados retornado pelo método
identificador – nome do método
[arg]* – zero ou mais argumentos, com tipo declarado,
separados por vírgula
[throws exceção*] – declaração de exceções
Exemplos
public static void main ( String[] args ) { ... }
private final synchronized
native int metodo (int i, int j, int k) ;
String abreArquivo ()
throws IOException, Excecao2 { ... }
38
39. Atributos de dados
Contém dados
Devem ser declaradas com tipo
Podem ser pré-inicializadas (ou não)
Podem conter modificadores
public class Livro {
private String titulo;
public class Produto { private int codigo = 815;
public static int total = 0; ...
public int serie = 0; public int mostraCodigo() {
public Produto() { return codigo;
serie = serie + 1; }
total = serie; }
} class Casa {
} class Data { static Humano arquiteto;
int dia; int numero;
int mes; Humano proprietario;
int ano; Doberman[] guardas;
} }
39
40. Sintaxe de declaração de atributos
Sintaxe básica
[modificador]* tipo identificador [= valor] ;
Chave
[modificador]* – zero ou mais modificadores (de acesso, de
qualidade), separados por espaços: public, private, static, transient,
final, etc.
tipo – tipo de dados que a variável (ou constante) pode conter
identificador – nome da variável ou constante
[= valor] – valor inicial da variável ou constante
Exemplo
protected static final double PI = 3.14159 ;
int numero;
40
41. Construtores
Têm sempre o mesmo nome que a classe
Contém procedimentos entre chaves, como os métodos
São chamados apenas uma vez: na criação do objeto
Pode haver vários em uma mesma classe
São identificados pelo número e tipo de argumentos
Nunca declaram tipo de retorno
public class Produto {
public static int total = 0;
public int serie = 0;
public Produto() { public class Livro {
serie = total + 1; private String titulo;
total = serie; public Livro() {
} titulo = "Sem título";
} }
public Livro(String umTitulo) {
titulo = umTitulo;
}
}
41
42. Sintaxe de construtores
Construtores são procedimentos especiais usados para
construir novos objetos a partir de uma classe
A definição de construtores é opcional: Toda classe sem
construtor declarado explicitamente possui um construtor
fornecido pelo sistema (sem argumentos)
Parecem métodos mas
não definem tipo de retorno
possuem, como identificador, o nome da classe: Uma classe pode
ter vários construtores, com o mesmo nome, que se
distinguem pelo número e tipo de argumentos
Sintaxe
[mod]* nome_classe ( [tipo arg]* ) [throws exceção*] { ... }
42
43. Exemplo
Exemplo de classe com um atributo de dados
(variável), um construtor e dois métodos
public class UmaClasse {
variavel (referencia)
private String mensagem; do tipo String
public UmaClasse () { construtor
mensagem = "Mensagem inicial";
} inicialização de variável
ocorre quando objeto é
public void setMensagem (String m) {
mensagem = m;
construído
} método que recebe
public String getMensagem() { parâmetro e altera
return mensagem; variável
}
} método que retorna variável
43
44. Exemplo: um círculo
public class Circulo {
public int x;
public int y;
public int raio;
public static final double PI = 3.14159;
public Circulo (int x1, int y1, int r) {
x = x1;
y = y1;
raio = r;
}
Circulo
public double circunferencia() { +x: int
return 2 * PI * raio; +y: int
} +raio: int
} +PI: 3.14159
+Circulo(x:int, y:int, raio:int)
+circunferencia(): double
44
45. Usando círculos
Use dentro de um método ou construtor (blocos de
procedimentos)
Circulo c1, c2, c3;
c1 = new Circulo(3, 3, 1);
c2 = new Circulo(2, 1, 4);
c3 = c1; // mesmo objeto!
System.out.println("c1: (" + c1.x + ", "
+ c1.y + ")");
int circ = (int) c1.circunferencia();
System.out.print("Raio de c1: " + c1.raio);
System.out.println("; Circunferência de c1: "
+ circ);
45
46. Herança
Circulo
+x: int
+y: int
+raio: int
+PI: 3.14159
+Circulo(x:int, y:int, raio:int)
+circunferencia(): double
class Coisa extends Circulo {
Coisa() {
this(1, 1, 0);
}
Coisa(int x, int y, int z) {
super(x, y, z);
}
} Coisa
+Coisa(x:int, y:int, raio:int)
+Coisa()
A Coisa é um Circulo!
46
47. Exercício
1. Escreva uma classe Ponto
contém x e y que podem ser definidos em construtor
métodos getX() e getY() que retornam x e y
métodos setX(int) e setY(int) que mudam x e y
2. Escreva uma classe Circulo, que contenha
raio inteiro e origem Ponto
construtor que define origem e raio
método que retorna a área
método que retorna a circunferência
use java.lang.Math.PI (Math.PI)
3. Crie um segundo construtor para Circulo que aceite
um raio do tipo int e coordenadas x e y
47
48. Vetores
Vetores são coleções de objetos ou tipos primitivos
Os tipos devem ser conversíveis ao tipo em que foi declarado o vetor
int[] vetor = new int[10];
Cada elemento do vetor é inicializado a um valor default,
dependendo do tipo de dados:
null, para objetos
0, para int, long, short, byte, float, double
Unicode 0, para char
false, para boolean
Elementos podem ser recuperados a partir da posição 0:
int elemento_1 = vetor[0];
int elemento_2 = vetor[1];
48
49. Vetores
De tipos primitivos
pilha heap pilha heap class Point {
public int x;
# 0 # 23 public int y;
}
0 0
v[0] = 23;
0 v[2] = 52; 52 Point
+x: int
int[] v = new int[3]; +y: int
inicialização dos
v é objeto do tipo (int[]) cria um vetor
elementos
De objetos (Point é uma classe, com membros x e y, inteiros)
pilha heap pilha heap heap
# null # # 0 p[0].x
0 p[0].y
null null
Point[] p = new Point[2]; p[0] = new Point();
cria um vetor cria um objeto Point
p é objeto do tipo (Point[]) 49
50. Inicialização de vetores
Vetores podem ser inicializados no momento em que são criados.
Sintaxe:
String[] semana = {"Dom", "Seg", "Ter",
"Qua", "Qui", "Sex","Sab"};
String[][] usuarios = {
{"João", "Ninguém"},
{"Maria", "D.", "Aparecida"},
{"Fulano", "de", "Tal"}
};
Essa inicialização não pode ser usada em outras situações
(depois que o vetor já existe), exceto usando new, da forma:
semana =
new String[] {"Dom", "Seg", "Ter", "Qua",
"Qui", "Sex", "Sab"};
50
51. A propriedade length
length: todo vetor em Java possui esta propriedade que
informa o número de elementos que possui
length é uma propriedade read-only
extremamente útil em blocos de repetição
for (int x = 0; x < vetor.length; x++) {
vetor[x] = x*x;
}
Uma vez criados, vetores não podem ser redimensionados
Use System.arraycopy() para copiar um vetor para
dentro de outro (alto desempenho)
Use java.util.ArrayList (ou Vector) para manipular com
vetores de tamanho variável (baixo desempenho)
ArrayLists e Vectors são facilmente conversíveis em vetores
quando necessário
51
52. Vetores multidimensionais
Vetores multidimensionais em Java são vetores de vetores
É possível criar toda a hierarquia (vetor de vetor de vetor...), para
fazer vetores retangulares ...
int [][][] prisma = new int [3][2][2];
... ou criar apenas o primeiro nível (antes de usar, porém, é preciso
criar os outros níveis)
int [][][] prisma2 = new int [3][][];
prisma2[0] = new int[2][];
prisma2[1] = new int[3][2];
prisma2[2] = new int[4][4];
prisma2[0][0] = new int[5];
prisma2[0][1] = new int[3];
52
53. Exercícios
1. Crie uma classe TestaCirculos que
a) crie um vetor de 5 objetos Circulo
b) imprima os valores x, y, raio de cada objeto
c) declare outra referência do tipo Circulo[]
d) copie a referência do primeiro vetor para o segundo
e) imprima ambos os vetores
f) crie um terceiro vetor
g) copie os objetos do primeiro vetor para o terceiro
h) altere os valores de raio para os objetos do primeiro
vetor
i) imprima os três vetores
53
54. Escopo de variáveis
Atributos de dados (declarados no bloco da classe): podem
ser usadas em qualquer lugar (qualquer bloco) da classe
Uso em outras classes depende de modificadores de acesso (public,
private, etc.)
Existem enquanto o objeto existir (ou enquanto a classe existir, se
declarados static)
Variáveis locais (declaradas dentro de blocos de
procedimentos)
Existem enquanto procedimento (método, bloco de controle de
execução) estiver sendo executado
Não podem ser usadas fora do bloco
Não pode ter modificadores de acesso (private, public, etc.)
54
55. Exemplo
public class Circulo {
variáveis visíveis dentro private int raio;
da classe, apenas private int x, y;
public double area() {
return Math.PI * raio * raio;
novoRaio é variável local }
ao método mudaRaio
maxRaio é variável local public void mudaRaio(int novoRaio) {
int maxRaio = 50;
ao método mudaRaio
if (novoRaio > maxRaio) {
raio é variável de instância raio = maxRaio;
}
if (novoRaio > 0) {
inutil é variável local int inutil = 0;
ao bloco if raio = novoRaio;
}
}
}
55
56. Membros de instância vs.
componentes estáticos (de classe)
Componentes estáticos
Os componentes de uma classe, quando declarados
'static', existem independente da criação de objetos
Só existe uma cópia de cada variável ou método
Membros de instância
métodos e variáveis que não tenham modificador 'static'
são membros do objeto
Para cada objeto, há uma cópia dos métodos e variáveis
Escopo
Membros de instância não podem ser usados dentro de
blocos estáticos: É preciso obter antes, uma referência para
o objeto
56
57. Exemplos
:Circulo
main() não
Membros de instância só existem faz parte do
+x: 0
+y: 0
se houver um objeto objeto! +raio: 0
area():double
Errado! Certo!
public class Circulo { membros de public class Circulo {
instância tem que
public int raio; public int raio; criar pelo
public int x, y; Pode. Porque area() public int x, y; menos um
faz parte do objeto! objeto!
public double area() { public double area() {
return Math.PI * raio * raio; return Math.PI * raio * raio;
} }
public static void main(String[] a){ public static void main(String[] a){
raio = 3; qual raio? Circulo c = new Circulo();
double z = area(); existe? c.raio = 3;
raio de c
} double z = c.area();
} qual area? } area() de c
Não pode. Não existe existe? }
objeto em main()!
57
58. Variáveis locais vs.
variáveis de instância
Variáveis de instância ...
sempre são automaticamente inicializadas
são sempre disponíveis no interior dos métodos de instância e
construtores
Variáveis locais ...
sempre têm que ser inicializadas antes do uso
podem ter o mesmo identificador que variáveis de instância
neste caso, é preciso usar a palavra reservada this para fazer
a distinção
class Circulo { variável de instância
private int raio;
public void mudaRaio(int raio) {
this.raio = raio; variável local
}
}
58
59. Comentários
Há duas formas de incluir comentários em um
arquivo Java
/* ... comentário de bloco ... */
// comentário de linha
Antes de métodos, construtores, campos de dados e
classes, o comentário de bloco iniciado com /**
pode ser usado para gerar HTML em documentação
Há uma ferramenta (JavaDoc) que gera
automaticamente documentação a partir dos arquivos
.java
relaciona e descreve classes, métodos, etc e cria
referências cruzadas
Descrições em HTML podem ser incluídas nos
comentários especiais /** ... */
59
60. Geração de documentação
Para gerar documentação de um arquivo ou de uma
coleção de arquivos .java use o javadoc:
javadoc arquivo1.java arquivo2.java
O programa criará uma coleção de arquivos HTML,
interligados, entre eles estarão
índice de referências cruzadas
uma página para cada classe, com links para cada
método, construtor e campo público, contendo descrições
(se houver) de comentários /** .. */
Consulte a documentação para maiores informações
sobre a ferramenta javadoc.
60
61. Convenções de código
Toda a documentação Java usa uma convenção para nomes
de classes, métodos e variáveis
Utilizá-la facilitará a manutenção do seu código!
Classes, construtores e interfaces
use caixa-mista com primeira letra maiúscula, iniciando novas
palavras com caixa-alta. Não use sublinhado.
ex: UmaClasse, Livro
Métodos e variáveis
use caixa mista, com primeira letra minúscula
ex: umaVariavel, umMetodo()
Constantes
use todas as letras maiúsculas. Use sublinhado para separar as
palavras
ex: UMA_CONSTANTE
61
62. Exercícios
1. Classe Conta e TestaConta
a) Crie a classe Conta, de acordo com o diagrama UML abaixo
acrescenta valor ao saldo atual
Conta
-saldo: double subtrai valor do saldo atual
-numero: String
sobrepõe Object.toString()
+depositar(valor: double) retorna String contendo saldo
+sacar (valor: double) atual
+toString(): String
+Conta(nome: String)
b) Crie uma classe TestaConta, contendo um método main(), e
simule a criação de objetos Conta, o uso dos métodos depositar() e
sacar() e imprima, após cada operação, os valores disponíveis
através do método toString()
c) Gere a documentação javadoc das duas classes
62