![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes. |
||
Você está aqui: Cards de Hidrostática |
||
|
||
|
|
||
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
POO - Programação Orientada a Objetos - Exercícios Resolvidos de Java - Ex. 2 - A classe Circulo (construtores, métodos, getters e setters e encapsulamento)Quantidade de visualizações: 20774 vezes |
|
Pergunta/Tarefa: Escreva uma classe Circulo para representar círculos. Esta classe deverá conter os seguintes atributos e métodos: a) Uma variável privada do tipo double chamada raio que guardará o valor do raio atual do circulo. b) Métodos get() e set() públicos que permitem definir e acessar o valor da variável raio. c) Um construtor que recebe o valor do raio como argumento. d) Um método getArea() que calcula e retorna a área do círculo. e) Um método getCircunferencia() que calcula e retorna a circunferência do círculo. f) Um método aumentarRaio() que recebe um valor double e o usa como percentual para aumentar o raio do círculo. Crie uma classe contendo um método main() para testar a funcionalidade da classe Circulo. Eis um exemplo de entrada e saída: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: Circulo.java:
package estudos;
public class Circulo{
private double raio; // guarda o raio atual do círculo
// construtor que recebe o valor do raio como argumento
public Circulo(double raio){
this.raio = raio;
}
// permite obter o raio do círculo
public double getRaio(){
return raio;
}
// permite definir o raio do círculo
public void setRaio(double raio){
this.raio = raio;
}
// obtém a área do círculo
public double getArea(){
double area = Math.PI * Math.pow(this.raio, 2);
return area;
}
// obtém a circunferência do círculo
public double getCircunferencia(){
double circunferencia = (2 * Math.PI) * this.raio;
return circunferencia;
}
// permite aumentar o raio de acordo com uma porcentagem fornecida
public void aumentarRaio(double porcentagem){
this.raio = this.raio + (porcentagem / 100.0) * this.raio;
}
}
Veja agora o método main() que nos permite testar a funcionalidade da classe Circulo:
package estudos;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
// vamos criar uma instância da classe Circulo
Scanner entrada = new Scanner(System.in);
System.out.print("Informe o raio do círculo: ");
double raio = Double.parseDouble(entrada.nextLine());
Circulo c = new Circulo(raio);
// vamos mostrar o valor do raio atual
System.out.println("Raio: " + c.getRaio());
// vamos mostrar a área
System.out.println("Área: " + c.getArea() + " metros quadrados");
// vamos mostrar a circunferência
System.out.println("Circunferência: " + c.getCircunferencia() + " metros");
// vamos aumentar o raio do circulo em uma determinada porcentagem
System.out.print("\nInforme o percentual de aumento do raio: ");
double percentual = Double.parseDouble(entrada.nextLine());
c.aumentarRaio(percentual);
// vamos mostrar o valor do raio atual
System.out.println("Raio: " + c.getRaio());
// vamos mostrar a área
System.out.println("Área: " + c.getArea() + " metros quadrados");
// vamos mostrar a circunferência
System.out.println("Circunferência: " + c.getCircunferencia() + " metros");
}
}
|
Android Java ::: androidx.appcompat.app ::: AppCompatActivity |
Como usar o método startActivity() da classe Activity ou AppCompatActivity do Android para mudar de telasQuantidade de visualizações: 2721 vezes |
|
Por mais simples que nossas aplicações Android sejam, elas serão compostas de duas ou mais telas, ou seja, duas ou mais Activity ou AppCompatActivity. Nesta dica mostrarei como usar o método startActivity() dessas duas classes para levar o usuário da primeira tela para a segunda. Lembre-se de que AppCompatActivity herda de Activity e, nos dias atuais, é a classe preferida para representar as telas individuais das aplicações Android. Comece criando um novo projeto no Android Studio. Escolha Empty Activity e dê o nome "App Duas Telas" ao projeto. Observe que o Android Studio já criou uma Activity ou AppCompatActivity com o nome MainActivity.java. Vamos nos certificar de que esta Activity é de fato a tela principal da aplicação. Abra o arquivo AndroidManifest.xml e veja se seu elemento <activity> se parece com o que temos abaixo:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Se tudo estiver Ok, vamos agora criar a segunda tela. Clique com o botão direito em cima do pacote "com.example.appduastelas" e escolha New -> Activity -> Empty Activity. Dê o nome "SegundaTela", desmarque a opção Launcher Activity e clique o botão Finish. Se você observar o arquivo AndroidManifest.xml novamente, você verá que a segunda tela já foi adicionada lá. Agora vamos examinar o arquivo XML de layout para a primeira tela (layout\activity_main.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.example.appduastelas.MainActivity">
<Button
android:id="@+id/abrir_tela"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:onClick="abrirSegundaTela"
android:text="@string/abrir_tela" />
</LinearLayout>
Note que temos um elemento <LinearLayout> e, dentro dele, um elemento <Button>. No botão nós declaramos o método abrirSegundaTela para seu atributo onClick. Não esqueça de atualizar o arquivo strings.xml para refletir o texto do botão "@string/abrir_tela". Pronto. Agora vamos ver o arquivo XML de layout para a segunda tela (layout\activity_segunda_tela.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.example.appduastelas.SegundaTela">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sou a segunda tela."/>
</LinearLayout>
Nesse layout nós temos um elemento <LinearLayout> e, dentro dele, um elemento <TextView>, que serve apenas para exibir um texto qualquer na segunda tela. Para finalizar, só precisamos escrever o método abrirSegundaTela() na MainActivity.java. Veja o código completo:
package com.example.appduastelas;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// método usado para abrir a segunda tela
public void abrirSegundaTela(View view) {
Intent intent = new Intent(this, SegundaTela.class);
startActivity(intent);
}
}
Veja que dentro do método abrirSegundaTela(), que recebe uma View com parâmetro, nós criamos um novo objeto da classe Intent e fornecemos o nome da segunda tela. Em seguida fazemos uma chamada ao método startActivity() passando o Intent recém-criado como argumento. Pronto! É só isso. Execute a aplicação, clique no botão e veja a segunda tela ser exibida. Pressione o botão Voltar e repita quantas vezes quiser. Agora é só criar mais telas e desenvolver vários e vários apps Android. |
Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Projetos Java Programação Orientada a Objetos - Exemplos Java |
Simulação de Sistema Bancário usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão consoleQuantidade de visualizações: 19666 vezes |
|
Sobre este projeto Java Durante estes anos que tenho trabalhado como freelancer, mais da metade das requisições dos meus clientes foram ajuda para desenvolver idéias de programação orientada a objetos em Java para projeto de faculdades e universidades. Com isso percebi que boa parte dos alunos e iniciantes em programação orientada a objetos já entendem toda a teoria. O que lhes falta é prática, ou seja, aplicar estes conhecimentos em aplicações do mundo real. Pensando nisso, apresento a você um projeto muito interessante e que, se bem entendido e praticado, o ajudará a desenvolver qualquer tipo de aplicação, seja comercial ou para solucionar problemas cotidianos. O projeto Java apresentado nesta dica é uma simulação completa de um Sistema Bancário, tudo com código fonte em Java, comentado, com variáveis em português, em um nível médio de programação, para facilitar o entendimento de todos. Nesta simulação nós temos a criação de classes Java, construtores, encapsulamento de dados, agregação e composição, métodos com retorno e sem retorno, variáveis estáticas, variáveis públicas e privadas, e relacionamento entre objetos (um para um, um para muitos, muitos para um) usando ArrayList. Sim, o projeto faz uso extensivo de ArrayList, o que o torna muito rico para o aprendizado e fixação dos conhecimentos da linguagem Java e suas classes principais. O Diagrama de Classes Java Antes de falarmos mais sobre o projeto, dê uma boa olhada no seu diagrama de classes: ![]() Como a aplicação está estruturada? Como podemos ver no diagrama de classes, nós temos uma classe Sistema que contém zero ou vários objetos da classe Banco (relacionamento um para muitos). A classe Banco, por sua vez, possui uma ArrayList de objetos da classe Agência, ou seja, mais um relacionamento um para muitos, já que cada agência pertence a um único banco. Cada agência pode possuir zero ou mais contas, e cada conta possui um ArrayList de objetos da classe Transação, o que nos permite registrar todas as operações nas contas e emitir o extrato bancário, com os débitos, créditos e transferências entre contas. Tudo isso é feito por meio de vários menus de opções, como podemos ver na imagem a seguir: ![]() Devo usar ArrayList do Java para desenvolver o sistema? Sim, objetos da classe ArrayList são perfeitos quando precisamos representar relacionamentos um para muitos e muitos para um. É claro que poderíamos usar vetores de objetos (usando array), mas ficaríamos restritos a tamanhos fixos, enquanto o ArrayList nos permite cadastrar quantos bancos, pessoas, agências e contas quisermos. Dessa forma, veja, por exemplo, o trecho de código que cria um novo banco:
switch(opcao){
case 1: // vamos cadastrar um novo banco
System.out.print("\nNúmero do Banco: ");
String numeroBanco = entrada.nextLine();
System.out.print("Nome do Banco: ");
String nomeBanco = entrada.nextLine();
// vamos incrementar o contador de bancos
Banco.contadorBancos++;
// agora vamos criar um novo objeto da classe Banco
Banco b = new Banco(Banco.contadorBancos, nomeBanco,
numeroBanco);
// e o adicionamos no ArrayList de bancos
bancos.add(b);
// e finalmente mostramos uma mensagem de sucesso.
System.out.println("\nO banco criado com sucesso");
break;
Note que este trecho de código é parte do case da opção Novo Banco do menu Gerenciar Bancos. Veja como usamos uma variável estática contadorBancos da classe Banco para criarmos um valor inteiro auto-incremento que nos permite identificadores únicos para cada banco. Veja agora mais um trecho de código muito interessante. Trata-se
case 3: // vamos pesquisar uma conta
System.out.print("\nId, número ou nome cliente da conta: ");
pesquisaConta = entrada.nextLine();
// chamamos o método que pesquisa a conta
temp = pesquisarConta(agenciaAtual, pesquisaConta);
if(temp == null){ // conta não encotrada
System.out.println("\nConta não encontrada na agência.");
}
else{
// mostra a conta encontrada
System.out.println("\nId da conta bancária: " +
temp.getId());
System.out.println("Número da conta: " +
temp.getNumero());
System.out.println("Cliente: " +
temp.getCliente().getNome());
System.out.println("Agência: " + agenciaAtual.getNumero() +
" - " + agenciaAtual.getCidade());
System.out.println("Banco: " +
bancoAtual.getNumero() + " - " + bancoAtual.getNome());
System.out.println("Saldo atual: " + temp.getSaldo());
System.out.println("Limite atual: " + temp.getLimite());
}
break;
Viu que código mais lindo? Note como a Programação Orientada a Objetos em Java nos permite desenvolver idéias de forma bem parecida mesmo ao mundo real. O fechamento com chave de ouro O produto final da aplicação Java deverá ser um extrato bancário mostrando os dados da conta escolhida, o histórico de transações com data, tipo da transação e valor, e o saldo atual da conta, com ou sem limite. Veja na imagem abaixo a formatação apresentada (mesmo em modo texto): ![]() Como posso obter este código fonte? Os links para você baixar todas as versões deste projeto estão abaixo: 1) SBJCNB-A - Sistema Bancário em Java com Código Fonte Versão Console - NetBeans IDE - Faça o Download. 2) SBJCNB-B - Sistema Bancário em Java com Código Fonte Versão Console - Lê e salva os dados em arquivo usando serialização (Serializable), ou seja, os métodos readObject() e writeObject() - NetBeans IDE - Faça o Download. Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes. |
VB.NET ::: Dicas & Truques ::: Strings e Caracteres |
Como concatenar strings em VB.NET usando o método Concat() da classe StringQuantidade de visualizações: 12314 vezes |
|
Nesta dica mostrarei como podemos concatenar strings em VB.NET por meio do método Concat() da classe String do .NET Framework. Este método recebe uma ou mais strings e retorna um novo objeto da classe String. Veja um exemplo de seu uso:
Imports System
Module Program
Sub Main(args As String())
' declara uma variável do tipo String
Dim frase, nome, cidade As String
nome = "Osmar"
cidade = "Goiânia"
frase = "Meu nome é "
frase = String.Concat(frase, nome)
frase = String.Concat(frase, " e eu moro em ",
cidade)
' e mostramos o resultado
Console.WriteLine(frase)
Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...")
' pausa o programa
Console.ReadKey()
End Sub
End Module
Ao executar este código VB.NET nós teremos o seguinte resultado: Meu nome é Osmar e eu moro em Goiânia |
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como navegar (percorrer) pelas células do TDBGrid do Delphi usando a tecla EnterQuantidade de visualizações: 13011 vezes |
|
Há situações nas quais queremos que os usuários de nossas aplicações Delphi sejam capazes de pressionar a tecla Enter para passar (ou saltar) pelas células dos controles DBGrid. A navegação padrão é com a tecla Tab e/ou as teclas de direção. Nesta dica eu mostro como isso pode ser feito. Suponha que você tem um componente TDBGrid com o nome "DBGrid1". Vá ao seu evento OnKeyPress e modifique-o para o código abaixo:
procedure TForm3.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
// o usuário pressionou a tecla Enter?
if Key = #13 then
begin
// ainda não estamos na última coluna
if DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 then
// vamos passar para a próxima célula
DBGrid1.Columns[DBGrid1.Columns.Grid.SelectedIndex + 1].Field.FocusControl
else begin
// vamos passar para o próximo registro da tabela
DBGrid1.DataSource.DataSet.Next;
DBGrid1.Columns[0].Field.FocusControl;
end;
end;
end;
Execute a aplicação e experimente o efeito. É claro que a navegação com a tecla Enter só funciona em uma direção (tal qual a tecla Tab). Para voltar para as células anteriores você ainda terá que acionar as teclas de direção. Note o uso do método Next da classe TDataSet para forçarmos o foco a ir para a próxima linha do TDBGrid. 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 |
|
JavaScript - JavaScript para iniciantes - Como obter o valor do maior número possível em JavaScript usando Number.MAX_VALUE |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |









