Ir para conteúdo

Arquivado

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

Juliano amadeu

Como pensar em Orientação a Objetos

Recommended Posts

Quero ajudar no front-end, porém para manipular o github estou apanhando um pouco ...

 

Aqui mesmo no tópico há uma série de posts que visam ajudar quem tem dificuldades com GIT (e hub)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui mesmo no tópico há uma série de posts que visam ajudar quem tem dificuldades com GIT (e hub)

 

Ok Evandro, fora o material que você cita, encontrei um video bem legal também, onde o autor fala sobre como instalar o GIT e utilizar o GITHUB (que confesso, eu não sabia que eram coisas diferentes!) para windows (sim eu uso windows e sou noob ... hehe), se mais alguém tiver interesse segue o video:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok Evandro, fora o material que você cita, encontrei um video bem legal também, onde o autor fala sobre como instalar o GIT e utilizar o GITHUB (que confesso, eu não sabia que eram coisas diferentes!) para windows (sim eu uso windows e sou noob ... hehe), se mais alguém tiver interesse segue o video:

 

Todos os passos que o JB mandou fazer para criar, clonar, entre outras funções, do seu repositório, são pelo console do linux. Entretanto, se você instalou o GIT para windows, ele deve ter a ferramenta GIT BASH, que é um terminal com os mesmos comandos do linux para o windows, eu passei a utilizar ele para usar o GITHUG, é bem interessante. Caso você prefira algo mais visual, existe o TortoiseGIT, que também foi comentado em outros post's. Com ambos você terá uma boa ferramente, além de material disponível na internet, para trabalhar no projeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todos os passos que o JB mandou fazer para criar, clonar, entre outras funções, do seu repositório, são pelo console do linux. Entretanto, se você instalou o GIT para windows, ele deve ter a ferramenta GIT BASH, que é um terminal com os mesmos comandos do linux para o windows, eu passei a utilizar ele para usar o GITHUG, é bem interessante. Caso você prefira algo mais visual, existe o TortoiseGIT, que também foi comentado em outros post's. Com ambos você terá uma boa ferramente, além de material disponível na internet, para trabalhar no projeto.

 

Valeu pela dica gabriel !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu acho a proposta do projeto interessante, vou perguntar novamente: o projeto foi abandonado?

 

O repositório continua online: https://github.com/iMastersDev/iMasters-Form/tree/dev

 

Portanto qualquer um pode efetuar uma fork, fazer suas modificações e efetuar um Pull Request.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ÚItimo commit do projeto no repositório principal foi há 20 dias.

 

Portanto, pergunto novamente: o projeto acabou?

se você ou ninguém enviar, irá fardar a acabar sim.

 

Envie um pull e então você vai contribuir para a continuidade.

é assim que funciona uma comunidade. Só se mantém se os membros ajudarem. Se ficarem apenas perguntando: "acabou? acabou?", e nada fizerem, então...

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você ou ninguém enviar, irá fardar a acabar sim.

 

Envie um pull e então você vai contribuir para a continuidade.

é assim que funciona uma comunidade. Só se mantém se os membros ajudarem. Se ficarem apenas perguntando: "acabou? acabou?", e nada fizerem, então...

 

William, não há a necessidade de me explicar como funciona a comunidade.

 

Apenas fiz a pergunta porque tenho interesse em acompanhar o projeto, mas não contribuir como o "membro" que você fala, devido à falta de tempo.

 

Portanto, estou apenas instigando as pessoas que "estão" participando a darem, ao menos, um sinal de vida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele ta meio Sonolento kkkkkkkkkkk..

 

Vamo anima pessoal..

 

alguem por acaso ja fez no seu fork alguma coisa qnto ao PHP.. so tem um commit de 'dataacesslayer' serve pra faze a conexao e o CRUD kkkkkkkk (bem cabulosa por sinal, so nao intendi os testes dele DML sei que isso nao ) =X

 

a ideia era o MVC pra um sistema de perguntas e respostas que muda a pergunta conforme a resposta!

 

pro pessoal que ja domina o MVC na ponta do dedo, acho que nao seria muito problema ne!! (esse nao e meu caso =X).

Compartilhar este post


Link para o post
Compartilhar em outros sites

DML - Data Manipulation Language, são exatamente as operações de CRUD.

DDL - Data Description Language são as criações de tabelas, schemas, etc...

 

Eu estou numa sequência meio corrida na faculdade, assim que possível termino essa parte de acesso a dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aconselho você programar mais um pouco de forma procedural.

Procure separar o que as portes por funções. Repare como elas funcionam em PHP.

Vá aos poucos.

 

Em teoria é fácil. Mas, no mundo da orientaçao à objetos torna-se mais difícil para você se você não conhece os recursos da linguagem.

 

Entender o que significa e como utilizar as palavras chaves que (vamos dizer) faz a programação orientada a objetos no php, como: this, self, parent, static, construct, destruct, protected, private, public, extends, implements, etc... demora um pouco. Tudo depende de você, como você absorve.

 

Eu gosto de lembrar isso "Programação Orientado a Objetos é a reutilização da programação procedural". Ou seja, aprenda primeiro a programar procedural, logo depois, orientado a objeto.

 

Você pode reutilizar codigos utilizando funcoes. Nem tudo precisa ser orientado a objetos (com execões de algumas linguagens fortemente tipada como Java).

 

A melhor linguagem para se ter uma base legal de orientado a objetos é estudando Java.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, eu quero aproveitar o assunto deste tópico e fazer uma pergunta.

 

Falando em encapsulamento, qual a diferença entre uma classe ter uma propriedade/atributo que lê/escreve sobre um campo interno, e ter um campo público que eu acesso diretamente após eu ter instanciado uma classe?

 

Estou confuso com isso, porque na linguagem C# por exemplo, existem propriedades de um objeto que trabalham sobre campos internos e privados de uma classe. Por exemplo, tenho um campo privado chamado nome, e uma propriedade pública chamada Nome que trabalha sobre esse campo privado. Mas, se uma hora ou outra eu preciso ter acesso a esse campo, usariamos a propriedade Nome certo ?

 

Porque eu não deixo esse campo nome público, e acesso ele diretamente ? Pois não vejo diferença em uma propriedade que lê/escreve o valor em um campo, ou eu lêr/escrever sobre esse campo diretamente.

 

Esse conceito de propriedades são validos em outras linguagens também, e não só em C#.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estudei um pouco de C# e conheço o básico do que ele tem em particular. Sei que nele a forma de implementar os "set's" e "get's" é diferente, da forma que você falou.

 

Quando falam sobre manter um atributo públic ou privado, eu sempre lembro a frase de um professor meu, quando perguntaram se era ou não para inserir set's e get's em uma classe.

Se é para utilizar set/get somente para inserir/retornar, deixem o atributo como público.

 

Mas encapsulamento não é ocultar a informação. Sinceramente, eu não seria a pessoa indica pois também não entendo 100%. Entretanto, há esse artigo Encapsulação que explana um pouco sobre o encapsulamento. De uma forma mais paradigmática do apenas atributos públicos/protected/private

Compartilhar este post


Link para o post
Compartilhar em outros sites

public/private/protected são o conceito de ocultação da informação, que é importante para conseguir uma maior consistência de dados.

Por exemplo, fazendo assim:

public class Db_Table {
public $dbAdapter;
public function __constructor(Db_Adapter $dbAdapter) {
   	$this->dbAdapter = $dbAdapter;
}
}

 

Nada impede o imbecil do cara que pegou esse código de fazer algo como:

$this->dbAdapter = 'Oi, eu sou o Goku!'.

 

Pronto, seu código foi pro espaço... Um atributo que deveria conter uma interface para o banco de dados agora tem o final de episódio de um anime...

 

public class Db_Table {
private $dbAdapter;
public function __constructor(Db_Adapter $dbAdapter) {
   	$this->setAdapter($adapter);
}
public function setAdapter(Db_Adapter $dbAdapter) {
   	$this->dbAdapter = $dbAdapter;
} 
}

 

Agora sim, esse código é à prova de idiotas. A propriedade dbAdapter invariavelmente será uma instância de Db_Adapter.

 

Encapsulamento é um animal totalmente diferente. Ele envolve o princípio de reuso de código (DRY - Don't Repeat Yourself) e esse conceito existe não apenas na orientação a objetos, o simples fato de criar uma função para guardar um pedaço repetitivo de código já é um encapsulamento.

 

A diferença é que com OO, herança, composição, polimorfismo e todas essas palavras estranhas, o encapsulamento é levado ao máximo do seu potencial.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas então Henrique, se o cara agora usar o método setAdapter('Oi eu sou goku !'), ele conseguirá atingir o mesmo objetivo, não é ?

Se bem que, o parâmetro é do tipo Db_Adapter, e provavelmente iria lançar um erro tentando inserir uma string.

 

Mas é isso que não entendo, de qualquer forma, eu vou acessar esse campo, mas de uma forma diferente, por outro caminho. Isso é um problema ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

[...]se o cara agora usar o método setAdapter('Oi eu sou goku !'), ele conseguirá atingir o mesmo objetivo, não é ?

Apesar de eu ser não ser o @Henrique Barcelos...

Não, não é a mesma coisa, o motivo você mesmo falou e está abaixo.

 

 

Se bem que, o parâmetro é do tipo Db_Adapter, e provavelmente iria lançar um erro tentando inserir uma string.

O Henrique criou um exemplo que explana exatamente como um método set deve ser. O método necessita que o parâmetro seja uma instância de DB_Adapter. Qualquer outra instância que for passada será negada.

 

Então, se você for fazer setAdapter('Oi eu sou goku!'), não irá funcionar, não lembro o tipo de erro lançado (warning|error|notice) e o objetivo da ocultação da informação estará concluído nesse método.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato, @Gabriel_Heming

 

Mas é isso que não entendo, de qualquer forma, eu vou acessar esse campo, mas de uma forma diferente, por outro caminho. Isso é um problema ?

Você vai acessar o campo, mas não diretamente, você não pode colocar qualquer porcaria lá, tem que seguir a especificação do método de acesso. Além disso, você pode ainda fazer condicionais para verificar se os dados são válidos.

 

class Square {
private $side;
public function __construct($side){
   	if($side > 0){
       	$this->side = $side;
   	} else {
       	throw new UnexpectedValueException('Square size must be > 0');
   	}
}
}

 

Se Square::$side fosse public, eu poderia facilmente fazer:

$s = new Square(2);
$s->side = -10;

 

E aí?

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.