Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xXxWesleyxXx

Por que usar classes?

Recommended Posts

olha eu de novo!...

 

Estou recriando os passos do curso, e vou comentando cada linha. Mas não estou conseguindo criar uma definição para o que está acontecendo aqui:

 

$chave1 = new chave(); //dizemos que esta variavel é a class chave
$chave1->segredo = 789;//atribuimos um valor para a caracteristica "segredo"

$fechadura = new fechadura();//dizemos que esta variavel é a class "fechadura"
$fechadura->destranca( $chave1);//Execultamos a função "destranca" e...

 

Então, estes comentarios estão certos? No ultimo , entendi que ele está executando a função, mas o que este parâmetro "$chave1" realmente quer dizer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá.

 

$chave1 = new chave(); //dizemos que esta variavel é a class chave

 

ela não É a classe chave, e sim uma instancia.

 

mais ai você pergunta a diferença, e é bem simples.

 

se ele fosse a classe em si você teria que criar varias classes iguais para passar valores diferentes.

 

e como ela é uma instancia(cópia) do seu objeto você pode criar a instancia dela várias vezes e passar valores diferentes.

 

$chave1 = new chave();
$chave1->segredo = 789;
echo $chave1->segredo;

$chave2 = new chave();
$chave2->segredo = 10;
echo $chave2->segredo;

 

saída

789

10

 

se isso fosse a classe em si não daria certo.

 

é uma característica o seu segredo porém é mais comum chamar de propriedade.

 

para fechadura vale a mesma coisa, é uma instancia e não a classe.

 

e sim você chama a função destranca que esta na classe fechadura.

 

o que acontece é que como parâmetro você não esta usando um valor especifico e sim passando um objeto do tipo chave.

 

imagino que seu método destranca esteja algo:

 

public function destranca(chave $chave)

 

por que você esta dizendo para o método que ele só vai aceitar objetos chaves e então se alguém tentar passar um clips ou palito de dente não vai ter retorno.

 

procure mais sobre encapsulamento e visibilidade pois quando agente trabalha com parâmetros é comum criarmos getters e setters por questão de segurança.

Compartilhar este post


Link para o post
Compartilhar em outros sites

auhsaushaushuhsuahs, estou sorrindo "atoa" :D, pois não imaginava como uma linguagem de programação pode ser tão perto da realidade. beleza, entendi a sua explicação, to continuando o estudo aqui...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius Rangel

Para mim fica meio confuso , como cara poderia fazer isso em tempo de execução. Mas , como que eu faria para impedir ele de fazer isso. Entendo que se eu pedir o um número pelo id , será inteiro , então eu faço essa validação. Porém e se for uma string que possa variar e tudo mais ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, tem este codigo lá no curso(link), que tá dando errado. esta faltando a class Eu, mas ele não explicou como se faz ela.

 

interface Projetil { //dizemos que tenho um projetil
}


//Dizemos o que pode ser nosso projetil
class Pau implements Projetil {
}

class Pedra implements Projetil {
}

class Sapato implements Projetil {
}

//dizemos que temos um alvo, que tem um função que é, acertar um projetil
interface Alvo {
       public function acerta( Projetil $projetil );
}


//dizemos o que pode ser nosso alvo
class Gato implements Alvo {
       public function acerta( Projetil $projetil ) {
               echo 'Miiiaaaaaauuuuuuuuuuuuu !!!!!';
       }
}

class Cao implements Alvo {
       public function acerta( Projetil $projetil ) {
               echo 'Aaaaauuuuuuuuuuu !!!!!';
       }
}

class Parede implements Alvo {
       public function acerta( Projetil $projetil ) {
               echo 'plof !!!!!';
       }
}



$gato = new Gato();
$cao = new Cao();
$parede = new Parede();

$pau = new Pau();
$pedra = new Pedra();
$sapato = new Sapato();

$eu = new Eu();

$eu->atira( $pau , $gato );
$eu->atira( $sapato , $cao );
$eu->atira( $pedra , $parede );

 

retorna:

Fatal error: Class 'Eu' not found in...

 

Tentei fazer ela, mas ainda não consigo isso.

 

Fiz até aqui:

class Eu{
public function atira(){

}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

dei uma lida rápida no que a galera ai acima postou

não vi nada falando sobre herança de classe para intender sobre pq usar public, private ou protected

so a arrumação q tipo digamos q vamos fazer visualização de usuarios

 

fariamos a classe cliente que poderia ver no site (x)

dpois fariamos a classe funcionario q é filha de cliente e herda as propriedades logo ela pode ver (x) e adicionariamos a ela o (y)

 

e teriamos o administrador que por sua vez é filho de funcionario e pode ver (x)e (y) e a ele seria adicionado (z)

 

sendo assim seria meio q uma pirâmide de cabeça para baixo

 

tipo....

 

o cliente q seria o q tem menos visão estaria na parte pontuda da piramide pq tem menos visão logo menos espaço, em seguida o funcionario ficaria no meio, e na base o adm

 

 

 

deu pra intender :ermm:/>/>

ou do jeito q eu falei ficou confuso? :huh:/>/>

 

 

ISSO SORE HERANÇA DE CLASSE...

 

 

I... agora q eu vi

o cara acima falo disso mesmo xD

xXxWesleyxXx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wesley

Também estudei nestas aulas e segue a classe feita.

 

class Eu {
   public function atira(Projetil $projetil , Alvo $alvo) {
       $alvo->acerta($projetil);
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Matheus! Agora ta pegando, mas... alguém pode me explicar este codigo para mim? tpw, achei bem confuso, a grosso modo, o que entendi foi, uma class pucha valores da outra. Expliquem em especial, os trechos marcados abaixo(class eu, e a execução dela mais abaixo):

 

//expliquem, este codigo em especial
interface Projetil { //dizemos que tenho um projetil
}


//Dizemos o que pode ser nosso projetil
class Pau implements Projetil {
}

class Pedra implements Projetil {
}

class Sapato implements Projetil {
}

//dizemos que temos um alvo, que tem um função que é, acertar um projetil
interface Alvo {
       public function acerta( Projetil $projetil );
}


//dizemos o que pode ser nosso alvo
class Gato implements Alvo {
       public function acerta( Projetil $projetil ) {
               echo 'Miiiaaaaaauuuuuuuuuuuuu !!!!!';
       }
}

class Cao implements Alvo {
       public function acerta( Projetil $projetil ) {
               echo 'Aaaaauuuuuuuuuuu !!!!!';
       }
}

class Parede implements Alvo {
       public function acerta( Projetil $projetil ) {
               echo 'plof !!!!!';
       }
}
//Expliquem, este codigo em especial
class Eu{
public function atira(Projetil $projetil, Alvo $alvo){
	$alvo->acerta($projetil);

}
}

$gato = new Gato();
$cao = new Cao();
$parede = new Parede();

$pau = new Pau();
$pedra = new Pedra();
$sapato = new Sapato();

$eu = new Eu();

//expliquem, este codigo em especial
$eu->atira( $pau , $gato );
$eu->atira( $sapato , $cao );
$eu->atira( $pedra , $parede );

Compartilhar este post


Link para o post
Compartilhar em outros sites

interface Projetil { //dizemos que tenho um projetil
} 

Ela define tudo que pode ser um projetil , Interface é como se fossem contratos , a partir do momento que você implementa algo a partir do Projetil você afirma que o que você implementou é um Projetil.

 

//Expliquem, este codigo em especial
class Eu{
       public function atira(Projetil $projetil, Alvo $alvo){
               $alvo->acerta($projetil);

       }
}

A classe Eu tem como função atirar , mas atirar o que ?

Por tanto para usar a função atirar é preciso ter um Projetil ( O que será jogado ) e o Alvo ( O que irá acertar ).

Se não tiver os atributos em ordem , não irá funcionar.

$alvo->acerta($projetil)

O seu atributo Alvo irá executar a função acerta , usando o atributo Projetil.

 

 

$eu->atira( $pedra , $parede ); 

Já aqui , você diz que a classe Eu , usando a função atira ( que precisa de um Alvo e Um Projetil para acertar o Alvo ). Eu(classe) atiro(função da classe Eu) um Pau(Objeto necessário para executar a função) em um Gato( Alvo necessário para executar a função).

 

Espero que tenha entendi , foi desta forma que eu entendi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que entendi, alguém pode, por favor, me propor um "desafio", tpw, algum sistema onde irei usar classes. Ai veremos se já peguei a lógica. Só me de o "problema" e eu irei achar a solução! pode ser?

 

Lembrando que tem ser algo que se resolva com a mesma complexidade desse código que passei á cima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matheus Lucca

 

o PHP trabalha com requisições, então pense comigo:

 

você acessou o link www.meusite.com.br é uma requisição ao domínio x ligado ao servidor Y e carregaram os arquivos do mesmo, como padrão ele vai abrir ou index ou home que as extensões sejam asp, php ou html.

 

então sua página inicial carrega produtos para comprar.

 

até ai sua consulta esta normal, depois o cliente pode filtrar essas compras a partir de um formulário você envia novos dados para a consulta, ou seja, no começo do seu arquivo você faz:

 

if(is_array($dados)){
if($dados[0] == "compra"){
  echo "é um dado de compra";
 }else{
 echo "Não é um dado de compra";
}
}else{
echo "Não é um array";
}

 

veja que quando vem a entrada eu trato ela para saber se estão de acordo com o que eu quero, é simples e sem segredo.

 

Sandro Matos

tome cuidado com isso, o seu exemplo pode até servir mas nem sempre..

é por isso que trabalhamos com interface, é justamente para trabalharmos com qualquer tipo de dado dentro de uma determinada regra.

 

veja no exemplo do projétil, O projétil é um item que não tem propriedades e então o Pau herdar esse item fica sem sentido por isso fazemos esse contrato para falar assim: "Olha pau você tem que ser um Projétil agora, beleza?".

 

não digo que no seu exemplo esta errado, é só um reforço pois muita gente se confunde.

Compartilhar este post


Link para o post
Compartilhar em outros sites

desafio ?

 

faza um "bloco de notas" aonde voce gardara os valores em um array.Pegando os dado por um input text. coloque dois input radio um sim e outro não, para mostrar ou não determinado valor do array, e coloque um botão de excluir aonde apagara dados do array.

 

é bem simples e fara você aprender a utilizar poo em uma aplicação simples.

 

ah, i coloca um botao para adicionar uma nova nota...

Compartilhar este post


Link para o post
Compartilhar em outros sites

desafio ?

 

faza um "bloco de notas" aonde voce gardara os valores em um array.Pegando os dado por um input text. coloque dois input radio um sim e outro não, para mostrar ou não determinado valor do array, e coloque um botão de excluir aonde apagara dados do array.

 

é bem simples e fara você aprender a utilizar poo em uma aplicação simples.

 

ah, i coloca um botao para adicionar uma nova nota...

ai ai ai... fui cutucar onça com vara curta! beleza! Não recuso desafios, vou fazer aqui, mostro para ver se ta certo!

 

"Vou pular de cabeça!" Sabe, de primeira olhada, já imagino como fazer, mas onde as classes entram nisso, não faço ideia, mas vou quebrar a cabeça um pouco aqui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa... vou tentar aqui, é que á minha experiencia com array, é quando faço buscas no banco de dados, e armazeno os resultados em um array, mas vou fazer umas pesquisas aqui. Hoje atarde estarei trabalhando, então só irei mexer anoite.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius Rangel

Entendi , achei que era um bicho de 7 cabeças ! Faço a validação , mas o que não é possível prever não é necessário ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade o tipo de dado que você precisa é só 1, então você tem que saber que tipo de dado você quer.

 

para o banco de dados, inserir as compras você sabe que precisa do ID do usuário e que esse ID é um inteiro, você tem 1 tipo de dado que pode entrar, então você trata caso for um valor booleano ou string vai dar erro só que também você tem que se certificar que é um inteiro no formulário não dando chances para que o usuário altere isso.

 

é bem simples, sem segredo pelo menos essa parte.

agora o OO é bem complexo, você acha que entende mas no final esta longe disso então recomendo que não parem de estudar.

boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se estiver preparado para ler um post maior do que o que já foi escrito aqui, abra o spoiler abaixo.

 

 

1ª dica master mais fodona de todas as que possa te dar em toda a minha vida:

 

Leia muito! Sempre! Pra caramba! O máximo que for possível!

 

 

* O que são classes no php?

 

Classes, não só no PHP como em qualquer linguagem orientada a objetos, constituem a definição dos elementos dos objetos.

 

* O que são objetos?

 

Objetos são as instâncias das classes. A realização/materialização das classes.

 

Imagine que você tem uma forma de qualquer coisa, podem ser aqueles pirulitos de chocolate.

A forma é a classe, ela define que ali serão forjados itens em estado líquido, que serão submetidos a um processo de resfriamento até que passem para o estado sólido e possam ser desenformados, apresentando as características definidas na forma

Cada pirulito que sai dessa forma é um objeto, uma instância da classe, definida pelo padrão da forma.

 

Note o grifo no último parágrafo, memorize ou armazene num bloco de notas. Essa informação será importante mais adiante.

 

* O que quer dizer "estanciar uma classe(ou objeto)"?

Como já explicado na reposta anterior, instanciar é gerar uma nova unidade de uma classe, que será denominada instância ou objeto. Instanciar é apenas invocar o processo de criação de um objeto. As características deste objeto estão descritos na(s) classe(s) a qual ele pertence. As funcionalidades de um objeto estão descritas na sua interface

 

* Por que usar, qual é sua importância?

 

Importância, sinceramente, não vejo alguma.

Quase todas as "vantagens" prescritas por quem defende OOP já foram debatidas e desmitificadas no primeiro link que o @William Bruno postou.

Porque usar?

Primeiro, porque algumas linguagens só funcionam sob OOP, depois porque OOP já compreende os conceitos de programação procedural e, dependendo da linguagem, programação funcional e orientada a eventos. Você estuda diversos métodos de programação num único paradigma. A última vantagem, estados de instância (novamente, memorize ou anote), será explicada mais adiante.

 

* Mesmo coisas "pequenas" é recomendado fazer com classes?

 

Principalmente. É um dos princípios de OOP. Quanto mais atômico e abstraído um objeto for, maior sua reusabilidade.

 

* Classes deixam um site mais seguro?

 

Absolutamente, NÃO

 

* Qual seria um bom tutorial na internet para ensinar o básico a respeito?

 

Também já foi postado, o curso aqui mesmo do fórum.

 

1 - Classe, seria uma espercie de array, que ao invez de armazenar varios valores, como int e string, armazena funções;

Não. Classes descrevem estruturas. Apesar de serem capazes, Classes não devem armazenar estados.

Quem armazena alguma coisa, são as instâncias, os objetos, que não armazenam apenas funções.

 

2 - Funções seria "ações" que o php faz, como consultas, atualizações etc, ou de uma maneira mais superficial: faz um login por exemplo;

Novamente, não apenas o PHP mas qualquer linguagem de programação com suporte a funções.

Funções, nada mais são que menores pedaços de instruções encapsulados.

 

Antes de nos aprofundarmos em funções, é necessário compreender de onde vieram.

As funções em programação são uma derivativa das funções matemáticas.

 

Partindo de algo bem simples, e ignorando os atalhos da linguagem, suponhamos que você precise somar 1 a um valor qualquer

$valorqualquer = 3;
$valorqualquermaisum = $valorqualquer + 1;
echo $valorqualquermaisum;

 

Agora imagine que você precisa fazer este tipo de operação diversas vezes durante a programação

 

$valorqualquer1 = 3;
$valorqualquermaisum1 = $valorqualquer1 + 1;
echo $valorqualquermaisum1;

$valorqualquer2 = 5;
$valorqualquermaisum2 = $valorqualquer2 + 1;
echo $valorqualquermaisum2;

$valorqualquer3 = 9;
$valorqualquermaisum3 = $valorqualquer3 + 1;
echo $valorqualquermaisum3;

$valorqualquer4 = 1;
$valorqualquermaisum4 = $valorqualquer4 + 1;
echo $valorqualquermaisum4;

 

 

Agora imagine um maior nível de complexidade, onde você tenha que somar somente se um número for par. Adicionamos uma linha de complexidade, o que nos leva a ter mais 4 linhas de complexidade no segundo exemplo. E mais 4 linhas para cada alteração (se quisermos detectar números perfeitos, por exmeplo), e mais N linhas se tivermos mais ocorrências de somar com um.

 

Para evitar todo esse trabalhão, entram em cena as funções da programação. Num primeiro momento, faremos assim:

 

$valorqualquer = 0;
$valorqualquermaisum = 1;

function somar_com_um()
{
   global $valorqualquer, $valorqualquermaisum;
   $valorqualquermaisum = $valorqualquer + 1;
}

 

Reescrevendo nosso segundo exemplo, a coisa fica um pouco mais fácil:

 

$valorqualquer = 3;
somar_com_um();
echo $valorqualquermaisum;

$valorqualquer = 5;
somar_com_um();
echo $valorqualquermaisum;

$valorqualquer = 9;
somar_com_um();
echo $valorqualquermaisum;

$valorqualquer = 1;
somar_com_um();
echo $valorqualquermaisum;

 

 

Veja que, a partir de agora, o número de linhas na execução é constante e qualquer modificação na complexidade, uma vez realizado dentro da função, se propaga por todo o resto do código.

 

nota: Observe que se, segundo nossa explicação hipotética, fosse necessário testar se o número é par, o nome da função deveria sofrer alterações por razões de clareza mas, em um primeiro momento, nosso código continuaria funcionando como devido.

 

Se leu o link postado sobre funções matemáticas, verá que as funções normalmente possuem um domínio e um contradomínio. Ainda, lê-se o contradomínio de

f(x): y

como Y em função de X. O que significa que Y se modifica quando X se modifica.

 

Quer dizer que podemos deixar nosso exemplo mais simples, legal e reutilizável ainda:

function soma_com_um($x) // $x é o nosso domínio
{
   global $valorqualquermaisum;
   // $valorqualquermaisum é o nosso contradomínio, ele varia
   // conforme o valor recebido no nosso domínio
   $valorqualquermaisum = $x + 1;
}

 

 

$valorqualquermaisum = 0;
somar_com_um(3);
echo $valorqualquermaisum;

somar_com_um(5);
echo $valorqualquermaisum;

somar_com_um(9);
echo $valorqualquermaisum;

somar_com_um(1);
echo $valorqualquermaisum;

 

 

Ainda, podemos utilizar a palavra-chave return para tornar o nosso contradomínio independente de uma variável global:

function somar_com_um($x)
{
   return $x + 1;
}

 

 

echo somar_com_um(3);

echo somar_com_um(5);

echo somar_com_um(9);

echo somar_com_um(1);

 

 

Veja que chegamos à incrível marca de 1 linha na execução. A parte mais legal, é que se tivermos que adicionar complexidade, modificamos apenas o corpo da função para propagar as mudanças para todo o código.

 

Em programação, chamamos os valores do domínio de argumentos ou parâmetros e o contradomínio é o nosso retorno.

 

Tudo isso para responder à sua pergunta: funções são pedaços de programação especializados em uma tarefa.

 

3 - Até aqui, a vantagem principal é a organização, terei um codigo mais limpo, com informações separadas por "categoria"(Estou tentando elaborar um ótica á respeito);

 

Como já foi desmentido, programar em OOP não garante que seu código vá ser mais organizado, limpo, eficiente ou qualquer outra coisa. Seguir os princípios de Orientação a objetos, vai.

 

4 - Para criar uma class, faz:

 

class NomeDaClasse { FUNÇÕES }

 

Mínima correção:

class NomeDaClasse { FUNÇÕES, VARIÁVEIS E CONSTANTES }

 

5 - Para criar funções, de login por exemplo, faz:

 

public function logar() { LOGAR }

 

Pode ser, pode não ser. Não existe uma forma definitiva e obrigatória.

 

(Esses "()" eu não entendi para que serve, sempre são vazios?)

 

Se você entendeu a explicação sobre funções, acredito que aqui esteja mais esclarecido. No seu caso, logar não recebe parâmetros/argumentos, e sua funcionalidade opera sobre algum outro domínio de função.

 

("public", pelo que eu entendi, declara quem (não sei quem!) pode acessar essa classe ou função, neste caso todos podem acessar, pois é publica.)

 

Não com essas palavras, mas está no caminho certo.

 

6 - Ás variáveis das funções, são objetos (Não tenho certeza);

 

Nem sempre:

function sum($a, $b)
{
   return $a + $b;
}

 

Mas, podem ser:

function makeIterator($array)
{
   return new ArrayIterator($array);
}

 

Corrigindo a afirmação:

As variáveis das funções podem ser e podem não ser objetos.

 

7 - Para usalos, primeiro chamamos a classe assim:

 

$Classe = new NomeDaClasse;

 

Como eu disse, está no caminho certo. Não chamamos a classe, criamos uma instância.

Para usá-los, primeiro devemos criar uma instância

 

8 - Depois, chamamos uma função dessa classe, que por sua vez irá executar algo:

 

$Classe = new NomeDaClasse;

$Classe -> logar();

 

Perfeito! Apenas atente para algumas nomenclaturas:

 

1. Funções dentro de classes e objetos são chamados métodos

2. Variáveis dentro de classes e objetos são chamados propriedades, atributos ou campos, classificados nesta ordem de popularidade.

 

Depois, chamamos um método do objeto, que, por sua vez, irá executar algo...

 

Saber chamar as coisas pelo nome correto tem sua importância. Mais adiante veremos a diferença entre método de objeto e método de classe.

 

(O "->", quer dizer que estou referindo a um objeto, mas neste caso, objeto seria a função em sí?)

 

O -> se chama T_OBJECT_OPERATOR e indica que você está imergindo um nível na estrutura dos objetos. Significa que, a partir dali, você está dentro do objeto designado à esquerda do operador de objetos.

 

$instancia->aqui_acesso_as_coisas_DENTRO_da_instancia;

 

Não, o objeto não seria a função em si. A função, como vimos, chamada método, pertence ao objeto e, para acessá-la, é como se entrássemos dentro do objeto.

 

class Obj
{
   function objMethod()
   {}
}

 

Se eu fizer

objMethod();

 

terei um erro:

Fatal error: Call to undefined function objMethod() in php shell code on line 1

 

que significa que a função objMethod não existe.

 

Agora, se eu fizer

$o = new Obj();
$o->objMethod();

 

tudo funciona OK, porque objMethod existe dentro de Obj ou, dentro de $o.

 

(Eu já vi em outro artigos o "$this->", o que quer dizer, quando se usa, qual é a diferença?)

 

This, do inglês, significa isto/este. Como a tradução deve ter esclarecido, faz referência à esta instância ou, se preferir, a instância atual.

 

class Classe
{
   public $variavel_qualquer;

   public function valor_da_variavel()
   {
       return $this->variavel_qualquer;
   }
}

$classe_1 = new Classe();
$classe_2 = new Classe();

$classe_1->variavel = 'variavel da classe 1';
$classe_2->variavel = 'variavel da classe 2';

echo $classe_1->valor_da_variavel();
echo $classe_2->valor_da_variavel();

 

Veja que, quando chamamos o método valor_da_variavel ele retorna o valor de $variavel_qualquer, armazenado nesta instância, ou seja, a instância onde valor_da_variavel foi executada.

 

9 - Usa-se interface para padronizar um sistema de classe;

 

Usa-se uma interface para descrever comportamentos.

http://forum.imasters.com.br/topic/393052-141-metodos-de-interface-e-polimorfismo/page__view__findpost__p__1550813

 

Uma interface define como poderemos utilizá-la, ou seja, como a vemos de fora sem precisar conhecer sua programação por dentro.

 

Todas as funções que você encontra no manual do PHP fazem parte de sua interface. Você sabe do que cada função precisa para funcionar e o que elas te devolvem, mas não sabe se isso é feito com C++, com PHP e nem como é feito. Essa é a função da interface. Você diz que aquilo funciona assim e pronto. Todos acreditam e confiam nisso sem precisar se importar como será feito.

 

10 - Á vantagem é que, mudanças no sistema são mais fazeis, como mudar de banco de dados por exemplo, e compreensão também fica melhor, assim todos, inclusive eu, poderá continuar ou modificar o sistema sem medo de errar;

 

BINGO!

 

 

11 - Meu problema: Nas explicações do autor do artigo, ele substituí DUAS palavras em português por UMA inglês, eu até apoio a ideia, afinal programação é em inglês, mas para mim isso não é a solução para padronizar o RACIOCÍNIO do sistema, nos meu um programador que lê em português, irá entender o que esta sendo feito, pois é organizado e comentado. Mas afinal, o que ele realmente fez, para todos considerar o sistema, do exemplo, mais organizado?

 

Tenho quatro motivos para nomear minhas variáveis/funções/classes em inglês:

 

1. Fluxo de leitura

if (false !== $valor_verdadeiro) faz_alguma_coisa(); else faz_outra_coisa();

 

Você fica intercambiando de inglês pra português o tempo todo. Em algumas linguagens como ruby e python é possível ler o código como se estivesse lendo uma sentença em inglês, quando sua nomenclatura está em inglês

if my_variable and my_other_variable is not None: do_it()
elif: do_that()

 

2. Acentuação

function funcao() {...}
$variavel = 'variável??';

 

$estacao, $paises, $sentencas, $programacao... Feio! Feio e Feio!! E ruim!

 

3. Compartilhamento

Se você pretende fazer algo que possa ser utilizado por outras pessoas, pode optar por uma rede de compartilhamento como Google Code ou GitHub. Escreva em inglês e encontre colaboradores muito mais facilmente, por todo o globo.

 

4. Convenções de nomenclatura

Se continuar programando, futuramente encontrará métodos que descrevem estados. Por exemplo, se você quiser saber se o banco está conectado. Provavelmente terá algo como

if (!$my_db->isConnected()) die("DB isn't connected");

 

Via de regra: se um método começa com is ou has, deve retornar verdadeiro/falso. Isso é muito difundido por muitos lugares, entre muitas comunidades, independente da linguagem de programação.

 

Agora veja que bunitu, fica em português

$meu_banco->eAtivo();
$meu_banco->estaConectado();

 

Bem, estou estudando aqui, mas de deparei com mias um duvida(novidade...), entendi sobre Encapsulamento, mas não o por que fazer? É para segurança, por que eu devo tornar uma class "private", o que ganho com isso. Se for algo de segurança, como um "haker" por exemplo, pode se aproveitar de classes publicas?

 

Não é sobre segurança, é sobre integridade de código. Já foi explicado aqui sobre encapsulamento, que nada tem a ver com visibilidade. Esta última, você mesmo já definiu corretamente.

 

Encapsulamento trata da posse de uma variável/função/constante. A quem ela pertence. Propriedades públicas estão encapsuladas, pois o seu dono está bem definido.

 

class MyClass
{
   public $myProperty;
}

 

Nos sabemos que myProperty pertence à MyClass exatamente por causa do encapsulamento.

 

Veja: encapsular -> Envolver em cápsula. Nem sempre uma cápsula é inviolável, portanto nem sempre segura. Mas a cápsula normalmente descreverá uma forma de acessar seu conteúdo, se este for o objetivo.

 

Resumindo:

Encapsulamento descreve uma forma de definir o quê pertence a quem e, pode ou não, descrever, também, uma forma de acesso ao conteúdo encapsulado.

 

Bem, então, tornar algo publico ou não, é apenas para evitar que EU faça alguma CAGADA(desculpe os termos) no código?

No mais, a ideia inteira de class, é para me organizar? E/ou eventualmente deixar o código melhor para outros?

 

:clap:

 

É melhor escrever em inglês ou não? Uma empresa de TI, por exemplo, eles tem este padrão?

 

É uma escolha pessoal/do time. Eu expus os meus motivos para escrever inglês. Trabalho numa empresa de TI e a escolha fica a critério do time.

 

PS.: Haveria um segundo post, mas o fórum junta, estragando tudo por causa do limite de quotes

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.