Giter Club home page Giter Club logo

java's Introduction

Java

Estou documentando todo meu aprendizado nessa linguagem, para que me ajude no futuro com conceitos "básicos" e espero que possa ajudar a outros como eu.

Por que está estudando essa linguagem?

R: De todas as linguagens de programação, Java é a que mais me chama atenção por sua tipagem e também pela organização que o Paradigma Orientado a Objetos proporciona.

Como eu estou estudando essa Linguagem.

R: Para aprender a sintaxe da língua, sobre Classes e as peculiaridades estou usando a Maratona Dev Dojo
R: Porém, paralelo a isso, estou lendo livros para entender como as coisas funcionam por debaixo dos panos. Eles são:

  • Use a cabeça - Java
  • Orientação a Objetos - Aprenda seus conceitos e suas aplicabilidades de forma eletiva
  • Algoritmos e Estrutura de Dados em Java
R: Não leio todos de uma vez, mas se pudesse indicar eu recomendaria começar por "Orientação a Objetos", é através dele que você entenderá o que são as estruturas, o que são objetos como eles funcionam por debaixo dos planos, com ele você conseguirá entender as diferenças entre o paradigma estruturado e o paradigma OO.

Tipos primitivos em Java

int, byte, long, char, short, float, double and boolean

POO - Definição e Aplicabilidade.

Definição segundo o Wikipédia: "A Orientação a Objetos é um paradigma de análise, projeto e programação de Sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos".

O POO em sua essência visa melhorar complexidades que a Programação Estruturada possui, por exemplo a reutilização de códigos Herânça, a capacidade de um trecho de código fazer apenas uma tarefa Coesão e também a capacidade de um código se relacionar com outro trecho de código Acoplamento. Lembrando... uma linguagem que usa o Paradigma Estruturado, consegue fazer Herânça, Coesão e Acoplamento, porém a complexidade para atingir esses termos é muito grande

Ela representa de forma mais eficaz as características e necessidades que um Software possue.

POO - Principios.

Reúso -> Em Linguagens de Programação nota-se que duas coisas podem ser reutilizadas: Comportamentos - Operações, serviços e açoes - e Informações - Dados e características. Obs: Para se atingir o Reuso atráves de Linguagens Estruturadas é necessário um código mais complexo, o que o torna mais propricio a erros.

Coesão -> Este princípio diz que cada trecho de código deve ser responsável por apenas uma função.

Acoplamento -> Citação do livro "Poo - Aprenda seus conceitos e aplicabilidades": Acoplamento é uma conexão, união ou ligação entre dois ou mais corpos, formando um único conjunto. Para a computação, acoplamento é o nível de interdependência entre os códigos de um programa de computador.

POO - Fundamentos

AbstraçãoSignificado segundo o dicionário Michaelis: "Processo pelo qual se isolam características de um objeto, considerando os que tenham em comum certos grupos de objetos". Uma abstração por natureza será incompleta, mas isso não quer dizer que ela não terá utilidade. Na verdade, isso a torna valiosa, pois apartir dessa abstração podemos modelas, adicionar e editar novas características. EXEMPLO: Imagine que uma fábrica de motos fosse representar da maneira mais simples (Abstrata) os produtos que ela fábrica e vende. Ela não saberia todos os tipos de moto que poderia fabricas, mas saberia que uma moto precisa de acento, motor, pneus e etc...
E apartir dessa abstração pode-se criar novos modelos de moto, onde uma moto pode ter 3 rodas, uma outra moto pode ter o acento reclinável e assim se segue.


Encapsulamento: Tornar o complexo, simples e tragável.
Com o encapsulamento podemos esconder toda a complexidade do código e retornar apens o resultado esperado.

POO - Estrutural

Classe

As Classes são a estrutura miníma necessária de um Código OO.
Antes de existir um Objeto é necessário existir uma classe, isso nos mostra que não é possível criar objetos sem que existam classes.

A Classe é a abstração inicial de um produto ou "abstração de uma entidade".
Seja ela Física (Bola, pessoa) ou Conceitual (viagem, venda, estoque e etc...)

Dica
Para facilitar o processo de indentificação das necessidades de um software o ponto de partida é pensar em Substantivos.
Ex: Imagine que precisamos desenvolver um site de vendas online, entidades como Venda, Cliente, Fornecedor, Produto.

	public class Cliente{
    	// Implementação aqui
	}

	public class Venda{
    	// Implementação aqui
	}
    
    public class Fornecedor{
		// Implementação aqui
	}
    
    public class Produto{
    	// Implementação aqui
	}

O Atributo


Os atributos de uma classe, são suas características. Imagine nossa classe Cliente, como atributos poderiámos ter Nome, CPF, Email, RA e etc...
public class Cliente{
    // Características
	int id;
    	String nome;
    	String CPF;
    	String Email;
}

Em Java é necessário informar o tipo e variável que será criada

O Método

Método é um trecho de código, disponibilizado pela Classe.
É executado quando é feita uma requisição a ele.

Dica
Para facilitar a indentificação de um método pense em verbos.
Por exemplo, a classe Cliente pode ter os métodos getNome, getCPF, getEmail, setEmail, setNome, setCPF.

public class Cliente{
	// Características
	int id;
	String nome;
	String CPF;
	String email;
    
    // Métodos
	// setters
	public void setNome(String nome){
        this.nome = nome;
	}
    
    public void setCPF(String CPF){
		this.CPF = CPF;
	}
    
    public void setEmail(String email){
        this.email = email;
	}
    
    // getters
	public int getId(){
    	return id;    
	}
    
	public String getNome(){
        return nome;
	}
    
	public String getCPF(){
		return CPF;
	}

	public String getEmail(){
		return email;
	}
}

Nos Métodos getters temos que informar o tipo de retorno da variável.
Lembrete: Na Linguagem Java o retorno informado deve ser retornado.

Alt text

O Construtor

São métodos especiais que ficam responsáveis por criar objetos

	Cliente cliente = new Cliente(); // Referência do objeto cliente à Classe Cliente. 

	// Análise do trecho de código.
	// Cliente cliente -> Cria uma variável `cliente` do tipo `Cliente`.
	// new Cliente() -> Com o operador 'new' faz uma referência a Classe.

Declarando um construtor

public class Cliente { // Classe principal
	private String nome;
    // atributos
	
	// construtores
	public Cliente(){} // Nota-se que o Construtor omite o tipo de retorno.
	// Como o construtor é um método da própria Classe, não é necessário
	// informar o tipo de retorno.
	
	// métodos abaixo
	public String getNome(){return nome;}
}

Há ainda a sobrecarga de construtores.

public class Cliente { // Classe principal
    // atributos
	
	// construtores
	public Cliente(){}
	
	public Cliente(String nome){
        	this.nome = nome;
	}

	public Cliente(String nome, String CPF){
		this.nome = nome;
		this.CPF = CPF;
	}
    
    public Cliente(String nome, String CPF, String email){
        	this.nome = nome;
            this.CPF = CPF;
            this.email = email;
	}
	
	// métodos
}

Agora se fossemos fazer refêrencia a um objeto poderiámos fazer de várias maneiras.

	Cliente cliente1 = new Cliente();
	Cliente cliente2 = new Cliente("Richarde");
    Cliente cliente3 = new Cliente("Xanderson", "000.000.000-00");
    Cliente cliente4 = new Cliente("Charley", "000.000.000-00", "[email protected]");
	
    System.out.println(cliente1.getNome()); // null
    System.out.println(cliente2.getNome()); // "Richard"
    System.out.println(cliente3.getNome()); // "Xanderson"
    System.out.println(cliente4.getNome()); // "Charley"

Todas as linhas fazem instância a mesma Classe, porém são objetos diferentes na memória do computador.

O Desconstrutor

Esse possui o papel inverso do Construtor, serve para eliminar a referência do objeto à memória.

void finalize(){
}
// esse método não é necessário, pesquise sobre "Garbage Collection - Java"

java's People

Contributors

theussoliveira011 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.