Você está aqui: Cards de AutoCAD Civil 3D |
||
|
||
|
|
||
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar classes abstratas em Java - Programação Orientada a Objetos - Java POOQuantidade de visualizações: 22362 vezes |
Classes abstratas (abstract classes) não diferem muito das classes que normalmente criamos, ou seja, elas também podem possuir propriedades e métodos. Porém, não é possível criar instâncias de uma classe abstrata usando o operador new. Veja:
abstract class Pessoa{
public String nome;
public int idade;
}
public class Estudos{
public static void main(String args[]){
// cria um objeto da classe Pessoa
Pessoa p = new Pessoa();
}
}
Ao tentarmos compilar este exemplo teremos a seguinte mensagem:
Estudos.java:9: Pessoa is abstract; cannot be
instantiated
Pessoa p = new Pessoa();
^
1 error
Classes abstratas geralmente contém métodos abstratos (ainda que métodos não abstratos sejam também permitidos). Um método abstrato é um método que possui apenas a assinatura. Não há implementação. Esta implementação deverá ser fornecida pela subclasse ou classe derivada. Uma classe que contém métodos abstratos deverá, obrigatoriamente, ser declarada abstrata. Veja um exemplo de um método abstrato:
public abstract class Pessoa{
public abstract String getNome();
}
Se a classe não fosse declarada com o modificador abstract, teríamos a seguinte mensagem de erro de compilação:
Pessoa.java:1: Pessoa is not abstract and does
not override abstract method getNome() in
Pessoa
public class Pessoa{
^
1 error
Classes abstratas são um dos tópicos mais complicados da linguagem Java e uma dor de cabeça enorme para aqueles que estão estudando para a certificação Java. Mostramos abaixo algumas dicas resultantes de nossas pesquisas sobre o assunto. 1)Uma classe não abstrata não pode conter métodos abstratos. Se uma classe concreta (não abstrata) herda de uma classe abstrata e não implementa todos os métodos abstratos, a classe derivada deve ser declarada abstract. Além disso, métodos abstratos não podem ser marcados como static. Insistir nisso pode gerar a seguinte mensagem de erro de compilação:
Pessoa.java:2: illegal combination of
modifiers: abstract and static
public static abstract String getNome();
^
2) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode conter construtores. Tais construtores serão invocados nos construtores das classes derivadas. 3) Uma subclasse pode ser abstrata até mesmo se sua superclasse for concreta. E isso é fácil de notar, uma vez que todas as classes Java herdam de Object, que é concreta. 4) Uma classe derivada pode sobrescrever um método de sua superclasse e declará-lo abstract. Isso faz sentido quando a classe derivada for abstract e quiser tornar o método herdado inválido. 5) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode ser usada como um tipo de dados. Esta técnica é útil quando parte do time de desenvolvedores precisa adiantar códigos que dependem de classes que ainda não foram implementadas (e, portanto, herdarão das classes abstratas usadas como tipos de dados) por outra parte do mesmo time. |
Haskell ::: Desafios e Lista de Exercícios Resolvidos ::: Haskell Básico |
Exercícios Resolvidos de Haskell - Como escrever uma função que recebe dois números inteiros e retorna a sua somaQuantidade de visualizações: 935 vezes |
|
Pergunta/Tarefa: Escreva uma função Haskell que recebe dois números inteiros e retorne a sua soma. A função deverá ser chamada a partir da função main do programa. O usuário deverá informar os dois números a serem somados. Sua saída deverá ser parecida com: Informe o primeiro número: 8 Informe o segundo número: 3 A soma dos dois números é: 11 Veja a resolução comentada deste exercício usando Haskell: import System.IO import Text.Printf -- declaração da função somar somar :: Int->Int->Int -- definição da função somar -- recebe dois inteiros e retorna a -- soma como um inteiro somar a b = a + b -- função principal do programa main = do -- vamos desabilitar o buffer de quebra de linha hSetBuffering stdout NoBuffering -- vamos pedir para o usuário informar dois números -- inteiros putStr "Informe o primeiro número: " n1 <- readLn::IO Int putStr "Informe o segundo número: " n2 <- readLn::IO Int -- agora vamos chamar a função somar e obter -- a soma dos dois números fornecidos let soma = somar n1 n2 -- agora mostramos o resultado printf "A soma dos dois números é: %d" soma |
C# ::: Dicas & Truques ::: Arquivos e Diretórios |
Como excluir um diretório em C# usando a função Delete() da classe DirectoryInfoQuantidade de visualizações: 3 vezes |
|
O método Delete() da classe DirectoryInfo do C# é muito útil quando precisamos excluir um diretório. Esta função é do tipo void, ou seja, não retorna nada. Veja um código completo demonstrando o seu uso:
using System;
using System.IO;
namespace Estudos {
class Principal {
static void Main(string[] args) {
// vamos criar uma nova instância da classe DirectoryInfo
DirectoryInfo dir = new DirectoryInfo(@"C:\estudos_csharp\imagens");
// vamos tentar excluir o diretório
try {
dir.Delete();
Console.WriteLine("Diretório excluído com sucesso.");
}
catch (Exception e) {
Console.WriteLine("Não foi possível excluir o diretório: {0}", e.ToString());
}
Console.WriteLine("\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
Ao executar este código C# nós teremos o seguinte resultado: Diretório excluído com sucesso. Se o diretório a ser excluido não estiver vazio, a chamada ao método System.IO.DirectoryInfo.Delete() poderá gerar o seguinte erro: Não foi possível excluir o diretório: System.IO.IOException: A pasta não está vazia. : 'C:\estudos_csharp\imagens' at System.IO.FileSystem.RemoveDirectoryInternal(String fullPath, Boolean topLevel, Boolean allowDirectoryNotEmpty) at System.IO.FileSystem.RemoveDirectory(String fullPath, Boolean recursive) at System.IO.DirectoryInfo.Delete() at Estudos.Principal.Main(String[] args) in C:\estudos_c#\Estudos\Principal.cs:line 12 |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Como listar todo o conteúdo de um diretório usando a função listFiles() da classe File do JavaQuantidade de visualizações: 4 vezes |
|
Nesta dica mostrarei como podemos usar o método listFiles() da classe File da linguagem Java para listar todo o conteúdo de um diretório. Note que usei os métodos isFile() e isDirectory(), também da classe File, para indicar se o item que está sendo lido é um arquivo ou diretório. Veja o código completo para o exemplo:
package arquivodecodigos;
import java.io.*;
public class Estudos{
public static void main(String[] args){
// nome e caminho do diretório
File diretorio = new File("C:\\estudos_c");
// um vetor de arquivos
File[] arquivos = diretorio.listFiles();
// foram encontrados arquivos ou diretórios?
if(arquivos != null){
// obtemos a quantidade de arquivos
int length = arquivos.length;
// e percorremos os arquivos individualmente
for(int i = 0; i < length; ++i){
File f = arquivos[i];
// é um arquivo?
if(f.isFile()){
System.out.println(f.getName());
}
else if(f.isDirectory()){ // é um diretório
System.out.println("Diretorio: " + f.getName());
}
}
}
}
}
Ao executar este código Java nós teremos um resultado parecido com: DICA.txt Diretorio: estudos Estudos_C.dev Estudos_C.exe Estudos_C.layout main.c main.o Makefile.win |
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como obter a quantidade de registros em um TClientDataSet do Delphi usando a propriedade RecordCountQuantidade de visualizações: 11781 vezes |
|
Em algumas situações precisamos saber a quantidade de registros atualmente armazenados em um componente TClientDataSet. Para isso podemos usar a propriedade RecordCount, implementada originalmente na classe TDataSet e reimplementada na classe TClientDataSet. Veja um trecho de código no qual usamos o evento OnClick de um botão para exibir a quantidade de registros atualmento no TClientDataSet:
procedure TForm3.Button3Click(Sender: TObject);
var
qRegistros: Integer;
begin
// obtém a quantidade de registros no TClientDataSet
qRegistros := ClientDataSet1.RecordCount;
// mostra o resultado
ShowMessage('O ClientDataSet possui ' + IntToStr(qRegistros)
+ ' registros.');
end;
Ao executar o código e clicar no botão você verá uma mensagem parecida com: "O ClientDataSet possui 20 registros.". Esta dica foi escrita e testada no Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





