|
|
(28 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| {{TOCright}}
| | #REDIRECT [[ist:Introdução aos Objectos]] |
| | |
| Esta secção apresenta conceitos fundamentais para a programação com objectos. Embora a maioria dos exemplos e da discussão utilize a linguagem Java, também se apresentam em paralelo outros baseados em C++. Quando relevante, podem ser utilizadas outras linguagens (e.g. PHP).
| |
| | |
| Embora algumas linguagens de programação com objectos não usem classes (e.g., as baseadas em protótipos), as que se discutem nestas páginas são, em geral, baseadas em sistemas de classes relacionadas por hierarquias de herança.
| |
| | |
| * [[O que é um objecto?|O que é um objecto]]
| |
| * [[Captura de características dos objectos]]
| |
| | |
| =Introdução à programação=
| |
| | |
| == Entidades Básicas ==
| |
| * [[Tipos primitivos em Java]]: dados atómicos simples;
| |
| * [[Classes, objectos e referências (Java)]]: referências e estruturas compostas ([[Comparação de Linguagens de Programação|contraste com C/C++]]);
| |
| | |
| == Organização de Memória e Visibilidade ==
| |
| | |
| A forma como as linguagens de programação organizam a memória e permitem a criação de objectos pode condicionar o modo de programar e a simplicidade de criação e destruição de objectos.
| |
| | |
| C++, tal como C, permitem a criação de objectos em memória estática (numa secção do programa executável), na pilha das funções e no ''heap'' (reserva de memória dinâmica). Os objectos criados estaticamente existem durante todo o programa; os criados na pilha de funções (incluindo os que são criados em blocos internos de funções), são destruídos quando o contexto onde foram criados termina; os objectos criados no ''heap'' têm de ser destruídos explicitamente (através do operador '''delete'''). Note-se que, quando se mencionam objectos, não se referem apenas instâncias de classes, mas de qualquer tipo (incluindo os primitivos).
| |
| | |
| Em Java, embora referências e instâncias de tipos primitivos possam ser criados no contexto de outros objectos ou nos blocos de funções (pilha), as instâncias de classes apenas podem ser criadas no ''heap''. As entidades criadas em contextos voláteis são automaticamente destruídas (como em C/C++). As entidades criadas no ''heap'' devem ser destruídas quando já não são necessárias (para libertar a memória). No entanto, ao contrário do C++, em Java não existe nenhum operador de libertação explícita de memória, sendo a libertação da responsabilidade de um processo automático, o ''garbage collector''. Este processo destrói periodicamente os objectos que não são referenciados por outros ou por qualquer referência de um contexto activo (e.g., uma referência local a uma função).
| |
| | |
| Quanto à visibilidade, as entidades estão, em geral, acessíveis no contexto onde são declaradas (e.g., um bloco de uma função), ou são globais. No caso de entidades declaradas no contexto de objectos, o acesso é completo a nível da definição do objecto. O acesso de fora do objecto depende de vários factores, em geral controláveis por primitivas da linguagem. Ver as palavras chave '''public''' ou '''private''' em linguagens como o C++, o Java ou o PHP.
| |
| | |
| == Classes e Objectos ==
| |
| | |
| * [[Classes, objectos e referências (Java)|Definição de classes simples]]: conceitos de variável e método;
| |
| * O uso da palavra reservada <code>static</code>: definição de dados e funções partilhados;
| |
| | |
| == Convenções de Escrita ==
| |
| | |
| As convenções de escrita, embora irrelevantes do ponto de vista do compilador (no sentido de que o compilador aceitará o programa desde que correctamente especificado na linguagem em causa), são importantes do ponto de vista humano, pois melhoram a legibilidade do programa.
| |
| * [[Convenções de escrita de programas em Java]]
| |
| * [[Convenções de escrita de programas em C++]]
| |
| | |
| * Escrita e compilação de programas.
| |
| | |
| = Operadores, Expressões e Controlo de Fluxo =
| |
| | |
| ==Operadores e Expressões==
| |
| | |
| * Apresentação e discussão de operadores, expressões e operações de conversão de tipos primitivos e objectos em Java
| |
| * Aspectos relacionados noutras linguagens (C/C++/Smalltalk)
| |
| * Método <code>equals</code>
| |
| * ''[[Conversão de Tipos|Casts]]''
| |
| * Restrições às operações sobre booleanos
| |
| | |
| ==Controlo de Fluxo==
| |
| | |
| * [[Palavras chave da linguagem Java#if|if]]-[[Palavras chave da linguagem Java#else|else]]
| |
| * [[Palavras chave da linguagem Java#while|while]], [[Palavras chave da linguagem Java#for|for]], [[Palavras chave da linguagem Java#do|do]]-[[Palavras chave da linguagem Java#while|while]]
| |
| * [[Palavras chave da linguagem Java#break|break]], [[Palavras chave da linguagem Java#continue|continue]], [[Palavras chave da linguagem Java#return|return]]
| |
| * [[Palavras chave da linguagem Java#switch|switch]]-[[Palavras chave da linguagem Java#case|case]]-[[Palavras chave da linguagem Java#default|default]]
| |
| * [[Comparação de Linguagens de Programação|Comparação com outras linguagens semelhantes]]
| |
| * Exemplos simples
| |
| | |
| = Exemplos e Exercícios =
| |
| | |
| == Exemplos ==
| |
| * [[Exemplos de Classes em Java]]: ''"Hello world"''.
| |
| | |
| == Exercícios ==
| |
| * [[Introdução aos Objectos/Exercício 01: Gato simples|Exercício 01: Gato simples]]
| |
| * [[Introdução aos Objectos/Exercício 02: Energia|Exercício 02: Energia]]
| |
| | |
| [[category:OOP]]
| |
| [[category:Java]]
| |
| [[category:Teaching]]
| |