<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2652225833285284136</id><updated>2012-02-16T20:06:52.949-03:00</updated><title type='text'>Renan Fretta</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://renanfretta.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2652225833285284136/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://renanfretta.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Renan Fretta</name><uri>http://www.blogger.com/profile/08602834276816446782</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2652225833285284136.post-5492027777265152184</id><published>2005-06-25T15:39:00.000-03:00</published><updated>2007-05-13T16:39:39.677-03:00</updated><title type='text'>ColdFusion Class – CFC - Herança</title><content type='html'>&lt;p id="titulo"&gt;Introdução&lt;/p&gt; &lt;p id="paragrafo"&gt;No artigo anterior, demonstrei como implementar os conceitos de programação orientada a objetos no ColdFusion. A programação orientada a objetos possui vários recursos, entre eles estão: o encapsulamento, a herança e o polimorfismo.&lt;/p&gt; &lt;p id="paragrafo"&gt;A programação orientada a objetos promove a definição de tipos (classes). As aplicações são construídas a partir da combinação dessas definições. Esta forma de desenvolvimento oferece benefícios em relação à abordagem estruturada tais como reutilização de código, melhor estruturação de aplicações e utilização de componentes de Software.&lt;/p&gt; &lt;p id="paragrafo"&gt;A Herança é o principal recurso da programaçãp orientada a objetos, promovendo a reutilização de código. É um tipo de relacionamento que pode existir entre classes. Por exemplo: a classe funcionário é derivada da classe pessoa, pois um funcionário é uma pessoa, assim como o carro é um veículo e a internet é um meio de comunicação.&lt;/p&gt; &lt;p id="titulo"&gt;Comparando herança no CF e no Java&lt;/p&gt; &lt;p id="destaque"&gt;Classe Pessoa em Java: Pessoa.java&lt;/p&gt; &lt;div id="codigo" title="Pessoa.java"&gt;public class Pessoa&lt;br /&gt;{&lt;br /&gt;private String nome;&lt;br /&gt;private int idade;&lt;br /&gt;&lt;br /&gt;public Pessoa() {&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Pessoa(String nome, int idade) {&lt;br /&gt;this.nome = nome;&lt;br /&gt;this.idade = idade;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getNome() {&lt;br /&gt;return nome;&lt;br /&gt;}&lt;br /&gt;public void setNome(String nome) {&lt;br /&gt;this.nome = nome;&lt;br /&gt;}&lt;br /&gt;public int getIdade() {&lt;br /&gt;return idade;&lt;br /&gt;}&lt;br /&gt;public void setIdade(int idade) {&lt;br /&gt;this.idade = idade;&lt;br /&gt;}&lt;br /&gt;public String toString() {&lt;br /&gt;return "\nNome: "+nome+"\nIdade: "+idade;&lt;br /&gt;}&lt;br /&gt;}&lt;/div&gt; &lt;p id="destaque"&gt;Classe Funcionário em Java: Funcionario.java&lt;/p&gt; &lt;div id="codigo" title="Funcionario.java"&gt;// A classe funcionário é herdada da classe pessoa&lt;br /&gt;public class Funcionario extends Pessoa&lt;br /&gt;{&lt;br /&gt;// Atributos da classe funcionário&lt;br /&gt;private double salario;&lt;br /&gt;private String cargo;&lt;br /&gt;// Construtor com parâmetros&lt;br /&gt;public class Funcionario(double salario, String cargo, String nome, int idade) {&lt;br /&gt;this.salario = salario;&lt;br /&gt;this.cargo = cargo;&lt;br /&gt;super(nome, idade);&lt;br /&gt;// Aqui é construtor da classe pessoa, super se refere ao pai desta classe&lt;br /&gt;}&lt;br /&gt;// Métodos get e set&lt;br /&gt;public void setSalario(double salario){&lt;br /&gt;this.salario = salario;&lt;br /&gt;}&lt;br /&gt;public double getSalario() {&lt;br /&gt;return salario;&lt;br /&gt;}&lt;br /&gt;public void setCargo(String cargo) {&lt;br /&gt;this.cargo = cargo;&lt;br /&gt;}&lt;br /&gt;public String getCargo() {&lt;br /&gt;return cargo;&lt;br /&gt;}&lt;br /&gt;// Método to String&lt;br /&gt;public String toString() {&lt;br /&gt;return (super.toString()+"\Cargo: "+cargo+"\nSalário: "+salario);&lt;br /&gt;// Desta vez utilizo o super para chamar o método toString da classe pessoa que é o pai desta classe.&lt;br /&gt;}&lt;br /&gt;} &lt;/div&gt; &lt;p id="destaque"&gt;Programa em Java que cria um objeto Funcionário: Programa.java &lt;/p&gt; &lt;div id="codigo" title="Programa.java"&gt;public class Programa&lt;br /&gt;{&lt;br /&gt;public static void main(String args[]){&lt;br /&gt;Funcionario f = new Funcionario(300, "Estagiário", "Renan Fretta", 18);&lt;br /&gt;System.out.println(f.toString());&lt;br /&gt;}&lt;br /&gt;} &lt;/div&gt; &lt;p id="destaque"&gt;Classe Pessoa em CF: Pessoa.cfc&lt;/p&gt; &lt;div id="codigo" title="Pessoa.cfc"&gt;&amp;lt;cfcomponent&amp;gt;&lt;br /&gt;&lt;p&gt;&amp;lt;cfset nome = ""&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset idade = 0&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="Init" access="public"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="n" required="true" type="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="i" required="true" type="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset nome = n&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset idade = i&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="getNome" access="public" returntype="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfreturn nome&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="setNome" access="public" &amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="n" required="true" type="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset nome = n&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="getIdade" access="public" returntype="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfreturn idade&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="setIdade" access="public" &amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="i" required="true" type="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset idade = i&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="toString1" access="public" returntype="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfreturn "&amp;lt;br&amp;gt;Nome: "&amp;nome&amp;amp;"&amp;lt;br&amp;gt;Idade: "&amp;idade&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt;&amp;lt;/cfcomponent&amp;gt; &lt;/div&gt; &lt;p id="destaque"&gt;Classe Funcionário em CF: Funcionario.cfc&lt;/p&gt; &lt;div id="codigo" title="Funcionario.cfc"&gt;&amp;lt;!--- A classe funcionário é herdada da classe pessoa ---&amp;gt;&lt;br /&gt;&lt;p&gt;&amp;lt;cfcomponent extends="Pessoa"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;!--- Atributos da classe funcionário ---&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset this.salario = 0&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset this.cargo = ""&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;!--- Construtor com parâmetros ---&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="Init" access="public"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="salario" required="true" type="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="cargo" required="true" type="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="nome" required="true" type="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="idade" required="true" type="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset this.salario = salario&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset this.cargo = cargo&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset super.Init(nome, idade)&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;!--- Métodos get e set ---&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="setSalario" access="public"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="salario" required="true" type="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset this.salario = salario&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="getSalario" access="public" returntype="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfreturn this.salario&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="setCargo" access="public"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="cargo" required="true" type="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset this.cargo = cargo&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="getCargo" access="public" returntype="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfreturn this.cargo&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;!--- Método toString ---&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="toString1" access="public" returntype="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfreturn super.toString1() &amp; "&amp;lt;br&amp;gt;Cargo: " &amp; this.cargo &amp;amp; "&amp;lt;br&amp;gt;Salário: " &amp; this.salario&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt;&amp;lt;/cfcomponent&amp;gt; &lt;/div&gt; &lt;p id="destaque"&gt;Programa em ColdFusion que cria um objeto Funcionário: Programa.cfm&lt;/p&gt; &lt;div id="codigo" title="Programa.cfm"&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&lt;p&gt;&amp;lt;body&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfoutput&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfobject name="f" component="Funcionario"&amp;gt; &lt;/p&gt; &lt;p&gt;#f.Init(300, "WEB Developer", "Renan Fretta", 18)# &lt;/p&gt; &lt;p&gt;#f.toString1()# &lt;/p&gt; &lt;p&gt;&amp;lt;/cfoutput&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/body&amp;gt; &lt;/p&gt;&amp;lt;/html&amp;gt; &lt;/div&gt; &lt;p id="titulo"&gt;Agora vou explicar um pouco a teoria e a prática&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;Criei um objeto da classe Funcionario e instanciei de f:&lt;br /&gt;&amp;lt;cfobject name=" f " component="Funcionario"&amp;gt;&lt;br /&gt;Funcionario f = new Funcionario(300, "WEB Developer", "Renan Fretta", 18);&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p id="paragrafo"&gt;Em Java como mostrei acima chamei o construtor com parâmetro automaticamente quando criei o objeto:&lt;br /&gt;Funcionario f = new Funcionario(300, "WEB Developer", "Renan Fretta", 18) ;&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p id="paragrafo"&gt;No CF o construtor não é executado automaticamente, eu tenho que chamá-lo normalmente como chamaria outro método qualquer.&lt;br /&gt;&amp;lt;cfoutput&amp;gt;#f.Init(300, "WEB Developer", "Renan Fretta", 18) #&amp;lt;/cfoutput&amp;gt;&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p id="paragrafo"&gt;Funciona da seguinte maneira: quando crio um objeto da classe funcionário estou dizendo que a instância é um funcionário. No nosso exemplo f é um funcionário. Agora você coloca um nome, idade, salário e idade para o f.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p id="paragrafo"&gt;Agora quer o objeto f já possui um nome, uma idade, um cargo e um salário, agora é só perguntar para ele:&lt;br /&gt;Qual é o seu nome?&lt;br /&gt;&lt;strong&gt;R:&lt;/strong&gt; f.getNome();&lt;br /&gt;Qual é a sua idade?&lt;br /&gt;&lt;strong&gt;R:&lt;/strong&gt; f.getIdade();&lt;br /&gt;Qual o seu cargo?&lt;br /&gt;&lt;strong&gt;R:&lt;/strong&gt; f.getCargo();&lt;br /&gt;Qual o seu salário?&lt;br /&gt;&lt;strong&gt;R:&lt;/strong&gt; f.getSalario();&lt;br /&gt;Quer trocar o nome?&lt;br /&gt;&lt;strong&gt;R:&lt;/strong&gt; f.setNome("João");&lt;br /&gt;Quer trocar a idade?&lt;br /&gt;&lt;strong&gt;R:&lt;/strong&gt; f.setIdade(21);&lt;br /&gt;Quer trocar de cargo?&lt;br /&gt;&lt;strong&gt;R:&lt;/strong&gt; f.setCargo("Analista de Sistemas");&lt;br /&gt;Quer trocar o salário?&lt;br /&gt;&lt;strong&gt;R:&lt;/strong&gt; f.setSalario(3000);&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p id="paragrafo"&gt;Você deve estar se perguntando: eu não criei o método getNome, getIdade, setNome e setIdade na classe Funcionário, isto vai dar erro de execução?&lt;br /&gt;&lt;strong&gt;R:&lt;/strong&gt; Não. É este o objetivo da herança, ou seja, promover a reutilização de código. Quando digo que uma classe é herdada de outra, todos os métodos da classe pai se incorporam à classe filho automaticamente. Caso eu tenha um método com o mesmo nome na classe filho acontece uma sobrecarga, fazendo que o método da classe pai seja substituído pela da classe filho.&lt;/p&gt; &lt;script&gt;FormatAS(new Array("Pessoa.java", "Funcionario.java","Programa.java")); FormatCF(new Array("Pessoa.cfc", "Funcionario.cfc", "Programa.cfm"));&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2652225833285284136-5492027777265152184?l=renanfretta.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://renanfretta.blogspot.com/feeds/5492027777265152184/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2652225833285284136&amp;postID=5492027777265152184&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2652225833285284136/posts/default/5492027777265152184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2652225833285284136/posts/default/5492027777265152184'/><link rel='alternate' type='text/html' href='http://renanfretta.blogspot.com/2007/05/coldfusion-class-cfc-herana.html' title='ColdFusion Class – CFC - Herança'/><author><name>Renan Fretta</name><uri>http://www.blogger.com/profile/08602834276816446782</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2652225833285284136.post-7070749138609593136</id><published>2005-06-17T13:00:00.000-03:00</published><updated>2007-05-12T15:03:14.214-03:00</updated><title type='text'>ColdFusion Class – CFC</title><content type='html'>&lt;p id="titulo"&gt;Introdução&lt;/p&gt; &lt;p id="paragrafo"&gt;Hoje em dia a programação orientada a objetos é uma realidade. Apesar de muitos desenvolvedores programarem utilizando técnicas de programação estruturada, ninguém pode negar os benefícios que a programação orientada a objetos pode proporcionar ao desenvolvimento de&amp;nbsp;aplicações, principalmente em grandes sistemas quando é necessário fazer uma manutenção ou ainda implementação de novos módulos ou recursos.&lt;/p&gt; &lt;p id="paragrafo"&gt;No ColdFusion é possível desenvolver aplicações orientadas a objetos.&amp;nbsp;Alguns autores dizem que o ColdFusion possui uma falsa programação orientada a objetos, mas&amp;nbsp;irei demonstrar como implementar os conceitos de programação orientada a objetos utilizando o ColdFusion.&lt;/p&gt; &lt;p id="titulo"&gt;Conceitos de Programação Orientada a Objetos no Java&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;&lt;span id="destaque"&gt;Classe&lt;/span&gt; é a representação de um tipo específico de objeto, composta pela sua descrição, que identifica os atributos e métodos.&lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;&lt;span id="destaque"&gt;Objeto&lt;/span&gt; é um tipo abstrato que contém atributos e métodos.&lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;&lt;span id="destaque"&gt;Métodos&lt;/span&gt; são procedimentos residentes nos objetos que determinam como eles irão atuar ao receber as mensagens.&lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;&lt;span id="destaque"&gt;Atributos&lt;/span&gt; são as características do objeto, como cor e tamanho, uma janela, por exemplo, tem atributos como o modelo, tamanho, abertura simples ou dupla, entre outros.&lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;&lt;span id="destaque"&gt;Subclasse&lt;/span&gt; é uma nova classe originada de uma classe maior (classe-pai).&lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;&lt;span id="destaque"&gt;Instância&lt;/span&gt; são os objetos de uma classe. Cada objeto utilizado em uma aplicação pertencente a uma classe é uma instância dessa classe.&lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;&lt;span id="destaque"&gt;Encapsulamento&lt;/span&gt; é um mecanismo que permite o acesso aos dados do objeto somente através dos métodos desse objeto. Nenhuma outra parte do programa pode operar sobre os dados de nenhum objeto. A comunicação entre os objetos é feita apenas através de mensagens.&lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;&lt;span id="destaque"&gt;Construtores&lt;/span&gt; são métodos criados dentro das classes que são executados automaticamente no momento que instanciamos um objeto. Um método construtor obrigatoriamente possui o mesmo nome da classe, podendo haver vários métodos construtores, sendo que devemos utilizar o conceito de sobrecarga de métodos. Sobrecarga é quando temos dois ou mais métodos com o mesmo nome, mas com parâmetros diferentes em tipo ou em quantidade.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p id="titulo"&gt;Comparação da programação orientada a objetos e a programação estruturada&lt;/p&gt; &lt;table width="100%"&gt; &lt;tbody&gt; &lt;tr id="cabecalho"&gt; &lt;td id="destaque_centralizado"&gt;Programação Orientada a Objetos&lt;/td&gt; &lt;td id="destaque_centralizado"&gt;Programação Estruturada&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td id="centralizado"&gt;Métodos&lt;/td&gt; &lt;td id="centralizado"&gt;Procedimentos ou funções&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td id="centralizado"&gt;Atributos&lt;/td&gt; &lt;td id="centralizado"&gt;Variável&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td id="centralizado"&gt;Objeto&lt;/td&gt; &lt;td id="centralizado"&gt;Variável&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td id="centralizado"&gt;Classes&lt;/td&gt; &lt;td id="centralizado"&gt;Tipos de dados&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p id="titulo"&gt;Comparação das Classes em ColdFusion com as&amp;nbsp;classes em Java&lt;/p&gt; &lt;p id="destaque"&gt;Classe pessoa em Java: Pessoa.java&lt;/p&gt; &lt;div id="codigo" title="Pessoa.java"&gt;public class Pessoa&lt;br&gt;{&lt;br&gt;// Atributos&lt;br&gt;private String nome;&lt;br&gt;private int idade;&lt;br&gt;// Estou usando sobrecarga no construtor.&lt;br&gt;// Construtor 1&lt;br&gt;public Pessoa() { &lt;br&gt;} &lt;br&gt;// Construtor 2 &lt;br&gt;public Pessoa(String nome, int idade) { &lt;br&gt;this.nome = nome; &lt;br&gt;this.idade = idade; &lt;br&gt;} &lt;br&gt;// Métodos get e set &lt;br&gt;public String getNome() { &lt;br&gt;return nome; &lt;br&gt;} &lt;br&gt;public void setNome(String nome) { &lt;br&gt;this.nome = nome; &lt;br&gt;} &lt;br&gt;public int getIdade() { &lt;br&gt;return idade; &lt;br&gt;} &lt;br&gt;public void setIdade(int idade) { &lt;br&gt;this.idade = idade; &lt;br&gt;} &lt;br&gt;// Método toString &lt;br&gt;public String toString() { &lt;br&gt;return "\nNome: "+nome+"\nIdade: "+idade; &lt;br&gt;} &lt;br&gt;} &lt;/div&gt; &lt;p id="destaque"&gt;Programa em Java que cria&amp;nbsp;um objeto Pessoa:&amp;nbsp;Programa.java&lt;/p&gt; &lt;div id="codigo" title="Programa.java"&gt;public class Programa&lt;br&gt;{ &lt;br&gt;public static void main(String args[]){ &lt;br&gt;Pessoa p = new Pessoa("Renan Fretta", 18);&lt;br&gt;System.out.println(p.toString());&lt;br&gt;}&lt;br&gt;} &lt;/div&gt; &lt;p id="destaque"&gt;Classe pessoa em ColdFusion: Pessoa.cfc&lt;/p&gt; &lt;div id="codigo" title="Pessoa.cfc"&gt; &lt;p&gt;&amp;lt;cfcomponent&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;!--- Atributos ---&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset nome = "" &amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset idade = 0&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;!--- Método construtor, diferente do Java que não é executado automaticamente ---&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="Init" access="public"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="n" required="true" type="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="i" required="true" type="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset nome = n&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset idade = i&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;!--- Métodos get e set ---&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="getNome" access="public" returntype="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfreturn nome&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="setNome" access="public" &amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="n" required="true" type="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset nome = n&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="getIdade" access="public" returntype="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfreturn idade&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="setIdade" access="public" &amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfargument name="i" required="true" type="numeric"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfset idade = i&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;!--- Métodos toString ---&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cffunction name="toString1" access="public" returntype="string"&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfreturn "&amp;lt;br&amp;gt;Nome: "&amp;amp;nome&amp;amp;"&amp;lt;br&amp;gt;Idade: "&amp;amp;idade&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/cffunction&amp;gt; &lt;/p&gt;&amp;lt;/cfcomponent&amp;gt; &lt;/div&gt; &lt;p id="destaque"&gt;Programa em&amp;nbsp;ColdFusion que cria um objeto Pessoa: Programa.cfm&lt;/p&gt; &lt;div id="codigo" title="Programa.cfm"&gt;&amp;lt;html&amp;gt;&lt;br&gt; &lt;p&gt;&amp;lt;body&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfoutput&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;cfobject name="p" component="Pessoa"&amp;gt; &lt;/p&gt; &lt;p&gt;#p.Init("Renan Fretta", 18)# &lt;/p&gt; &lt;p&gt;#p.toString1()# &lt;/p&gt; &lt;p&gt;&amp;lt;/cfoutput&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/body&amp;gt; &lt;/p&gt;&amp;lt;/html&amp;gt; &lt;/div&gt; &lt;p id="titulo"&gt;Considereções finais&lt;/p&gt; &lt;p id="paragrafo"&gt;Utilizei o método toString1 no ColdFusion, pois se eu colocar toString da erro, ele diz que o&amp;nbsp;ColdFusion já possui uma função com esse nome. Olhei na referência sobre o comando this, mas não consegui implemetá-lo, então utilizei inicial dos atributos como i para idade e n para nome. &lt;/p&gt; &lt;p id="titulo"&gt;Agora vou explicar um pouco a teoria e a prática&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;Criei um objeto da classe Pessoa e instanciei de p:&lt;br&gt;&amp;lt;cfobject name="p" component="Pessoa"&amp;gt;&lt;br&gt;Pessoa p = new Pessoa("Renan Fretta", 18); &lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;Em Java, como demonstrei acima, chamei o construtor com parâmetro automaticamente quando criei o objeto:&lt;br&gt;Pessoa p = new Pessoa("Renan Fretta", 18); &lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;Se eu quisesse utilizar o construtor sem parâmetros basta eu colocar assim:&lt;br&gt;Pessoa p = new Pessoa(); &lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;No&amp;nbsp;ColdFusion o construtor não é executado automaticamente, então&amp;nbsp;chame ele&amp;nbsp;normalmente como chamaria outro método qualquer.&lt;br&gt;&amp;lt;cfoutput&amp;gt;#p.Init("Renan Fretta", 18)#&amp;lt;/cfoutput&amp;gt; &lt;/p&gt; &lt;li&gt; &lt;p id="paragrafo"&gt;Funciona da seguinte maneira quando crio um objeto da classe pessoa estou dizendo que a instância é uma pessoa. No nosso exemplo p é uma pessoa. Agora você coloca um nome para o p, depois você coloca uma idade para ele.&lt;br&gt;&lt;br&gt;Então o nosso objeto p possui um nome e uma idade, agora é só perguntar para ele: &lt;br&gt;&lt;span id="destaque"&gt;Qual é o seu nome?&lt;br&gt;R: &lt;/span&gt;p.getNome();&lt;br&gt;&lt;span id="destaque"&gt;Qual é a sua idade?&lt;br&gt;R: &lt;/span&gt;p.getIdade();&lt;br&gt;&lt;span id="destaque"&gt;Quero trocar meu nome:&amp;nbsp;&lt;/span&gt;p.setNome("Jõao");&lt;br&gt;&lt;span id="destaque"&gt;Quero trocar minha idade:&amp;nbsp;&lt;/span&gt;p.setIdade(21);&lt;br&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;script&gt;FormatAS(new Array("Pessoa.java", "Programa.java")); FormatCF(new Array("Pessoa.cfc", "Programa.cfm"));&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2652225833285284136-7070749138609593136?l=renanfretta.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://renanfretta.blogspot.com/feeds/7070749138609593136/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2652225833285284136&amp;postID=7070749138609593136&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2652225833285284136/posts/default/7070749138609593136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2652225833285284136/posts/default/7070749138609593136'/><link rel='alternate' type='text/html' href='http://renanfretta.blogspot.com/2007/05/coldfusion-class-cfc_12.html' title='ColdFusion Class – CFC'/><author><name>Renan Fretta</name><uri>http://www.blogger.com/profile/08602834276816446782</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
