Baixe o app para aproveitar ainda mais
Prévia do material em texto
TDITDI Tecnologia e Desenvolvimento ITecnologia e Desenvolvimento I TDITDI Tecnologia e Desenvolvimento ITecnologia e Desenvolvimento I Prof. MsC Vicente Paulo de Camargo PUCGO O CONTEÚDO DOS SLIDES FAZ REFERÊNCIA AO MATERIAL DA APOSTILA K19-K11 E DO LIVRO JAVA – USE A CABEÇA E DO LIVRO JAVA – COMO PROGRAMAR (DEITHEL) POOPOO -- FUNDAMENTOSFUNDAMENTOS ••AA ProgramaçãoProgramação OrientadaOrientada aa ObjetosObjetos (POO)(POO) surgiusurgiu nono finalfinal dada décadadécada dede 6060 comcom aa linguagemlinguagem SimulaSimula--6767.. ••OsOs conceitosconceitos dede POOPOO foramforam aprimoradosaprimorados comcom aa linguagemlinguagem SmallTakSmallTak ••C++C++ ee JavaJava popularizarampopularizaram aa POOPOO PROGRAMAÇÃO ORIENTADA A OBJETOSPROGRAMAÇÃO ORIENTADA A OBJETOS ••AA ProgramaçãoProgramação OrientadaOrientada aa ObjetosObjetos (POO)(POO) surgiusurgiu nono finalfinal dada décadadécada dede 6060 comcom aa linguagemlinguagem SimulaSimula--6767.. ••OsOs conceitosconceitos dede POOPOO foramforam aprimoradosaprimorados comcom aa linguagemlinguagem SmallTakSmallTak ••C++C++ ee JavaJava popularizarampopularizaram aa POOPOO POOPOO -- FUNDAMENTOSFUNDAMENTOS Na POO um programa é visto como um conjunto de objetosNa POO um programa é visto como um conjunto de objetos que se comunicam através de mensagensque se comunicam através de mensagens Na POO um programa é visto como um conjunto de objetosNa POO um programa é visto como um conjunto de objetos que se comunicam através de mensagensque se comunicam através de mensagens PROGRAMAÇÃO ORIENTADA A OBJETOSPROGRAMAÇÃO ORIENTADA A OBJETOS POOPOO -- FUNDAMENTOSFUNDAMENTOS Na POO um programa é visto como um conjunto de objetosNa POO um programa é visto como um conjunto de objetos que se comunicam através de mensagensque se comunicam através de mensagens Na POO um programa é visto como um conjunto de objetosNa POO um programa é visto como um conjunto de objetos que se comunicam através de mensagensque se comunicam através de mensagens PROGRAMAÇÃO ORIENTADA A OBJETOSPROGRAMAÇÃO ORIENTADA A OBJETOS Representam osRepresentam os comportamentos decomportamentos de cada objetocada objeto POOPOO -- FUNDAMENTOSFUNDAMENTOS OBJETOSOBJETOSOBJETOSOBJETOS ••ObjetosObjetos sãosão usadosusados parapara representarrepresentar entidadesentidades ouou “coisas”“coisas” dodo mundomundo realreal ••ObjetosObjetos sãosão utilizadosutilizados parapara representarrepresentar aa abstraçãoabstração dada realidaderealidade parapara solucionarsolucionar umum determinadodeterminado problemaproblema ••ObjetosObjetos sãosão usadosusados parapara representarrepresentar entidadesentidades ouou “coisas”“coisas” dodo mundomundo realreal ••ObjetosObjetos sãosão utilizadosutilizados parapara representarrepresentar aa abstraçãoabstração dada realidaderealidade parapara solucionarsolucionar umum determinadodeterminado problemaproblema POOPOO -- FUNDAMENTOSFUNDAMENTOS OBJETOSOBJETOSOBJETOSOBJETOS ••ObjetosObjetos sãosão usadosusados parapara representarrepresentar entidadesentidades ouou “coisas”“coisas” dodo mundomundo realreal ••ObjetosObjetos sãosão utilizadosutilizados parapara representarrepresentar aa abstraçãoabstração dada realidaderealidade parapara solucionarsolucionar umum determinadodeterminado problemaproblema AA ABSTRAÇÃOABSTRAÇÃO dada realidaderealidade éé desprezardesprezar oo queque éé irrelevanteirrelevante parapara aa soluçãosolução dodo problemaproblema AA ABSTRAÇÃOABSTRAÇÃO dada realidaderealidade éé desprezardesprezar oo queque éé irrelevanteirrelevante parapara aa soluçãosolução dodo problemaproblema ••ObjetosObjetos sãosão usadosusados parapara representarrepresentar entidadesentidades ouou “coisas”“coisas” dodo mundomundo realreal ••ObjetosObjetos sãosão utilizadosutilizados parapara representarrepresentar aa abstraçãoabstração dada realidaderealidade parapara solucionarsolucionar umum determinadodeterminado problemaproblema AA ABSTRAÇÃOABSTRAÇÃO dada realidaderealidade éé desprezardesprezar oo queque éé irrelevanteirrelevante parapara aa soluçãosolução dodo problemaproblema AA ABSTRAÇÃOABSTRAÇÃO dada realidaderealidade éé desprezardesprezar oo queque éé irrelevanteirrelevante parapara aa soluçãosolução dodo problemaproblema POOPOO -- FUNDAMENTOSFUNDAMENTOS OBJETOSOBJETOSOBJETOSOBJETOS ••IndependentementeIndependentemente sese éé ANIMADOANIMADO ouou INANIMADOINANIMADO,, CONCRETOCONCRETO ouou ABSTRATOABSTRATO umum objetoobjeto possuipossui certascertas característicascaracterísticas queque facilitamfacilitam suasua identificaçãoidentificação ••EssasEssas característicascaracterísticas sãosão denominadasdenominadas dede ATRIBUTOSATRIBUTOS ••OsOs objetosobjetos possuempossuem tambémtambém COMPORTAMENTOSCOMPORTAMENTOS queque representamrepresentam açõesações queque sãosão executadasexecutadas pelopelo objetoobjeto ••IndependentementeIndependentemente sese éé ANIMADOANIMADO ouou INANIMADOINANIMADO,, CONCRETOCONCRETO ouou ABSTRATOABSTRATO umum objetoobjeto possuipossui certascertas característicascaracterísticas queque facilitamfacilitam suasua identificaçãoidentificação ••EssasEssas característicascaracterísticas sãosão denominadasdenominadas dede ATRIBUTOSATRIBUTOS ••OsOs objetosobjetos possuempossuem tambémtambém COMPORTAMENTOSCOMPORTAMENTOS queque representamrepresentam açõesações queque sãosão executadasexecutadas pelopelo objetoobjeto POOPOO -- FUNDAMENTOSFUNDAMENTOS OBJETOSOBJETOSOBJETOSOBJETOS UmUm OBJETOOBJETO possuipossui ATRIBUTOSATRIBUTOS ee COMPORTAMENTOSCOMPORTAMENTOS POOPOO -- FUNDAMENTOSFUNDAMENTOS OBJETOS CARRO e PESSOAOBJETOS CARRO e PESSOA POOPOO -- FUNDAMENTOSFUNDAMENTOS OBJETOSOBJETOSOBJETOSOBJETOS ••UmUm atributoatributo éé umauma variávelvariável queque pertencepertence aa umum objetoobjeto ••OsOs dadosdados dede umum objetoobjeto sãosão armazenadosarmazenados emem seusseus atributosatributos ••UmUm atributoatributo éé umauma variávelvariável queque pertencepertence aa umum objetoobjeto ••OsOs dadosdados dede umum objetoobjeto sãosão armazenadosarmazenados emem seusseus atributosatributos POOPOO -- FUNDAMENTOSFUNDAMENTOS OBJETOSOBJETOSOBJETOSOBJETOS NÃONÃO ESQUEÇAESQUEÇA:: OsOs objetosobjetos nãonão representamrepresentam apenasapenas coisascoisas concretasconcretas comocomo osos clientesclientes dede umum bancobanco ouou dede umauma lojaloja OsOs objetosobjetos sãosão utilizadosutilizados parapara representarrepresentar tambémtambém coisascoisas abstratasabstratas como,como, porpor exemplo,exemplo, contaconta bancária,bancária, umauma consultaconsulta médicamédica ee outrosoutros NÃONÃO ESQUEÇAESQUEÇA:: OsOs objetosobjetos nãonão representamrepresentam apenasapenas coisascoisas concretasconcretas comocomo osos clientesclientes dede umum bancobanco ouou dede umauma lojaloja OsOs objetosobjetos sãosão utilizadosutilizados parapara representarrepresentar tambémtambém coisascoisas abstratasabstratas como,como, porpor exemplo,exemplo, contaconta bancária,bancária, umauma consultaconsulta médicamédica ee outrosoutros POOPOO -- FUNDAMENTOSFUNDAMENTOS OBJETOSOBJETOSOBJETOSOBJETOS LEMBRELEMBRE--SESE:: UMUM OBJETOOBJETO ÉÉ UMAUMA VARIÁVELVARIÁVEL DEFINIDADEFINIDA EMEM UMUM PROGRAMAPROGRAMA E,E, EVIDENTEMENTE,EVIDENTEMENTE, ALOCAALOCA UMUM ESPAÇOESPAÇO NANA MEMÓRIAMEMÓRIA DODO COMPUTADORCOMPUTADOR LEMBRELEMBRE--SESE:: UMUM OBJETOOBJETO ÉÉ UMAUMA VARIÁVELVARIÁVEL DEFINIDADEFINIDA EMEM UMUM PROGRAMAPROGRAMA E,E, EVIDENTEMENTE,EVIDENTEMENTE, ALOCAALOCA UMUM ESPAÇOESPAÇO NANA MEMÓRIAMEMÓRIA DODO COMPUTADORCOMPUTADOR POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSESCLASSES ••OsOs objetosobjetos sãosão classificadosclassificados conformeconforme suassuas semelhançassemelhanças ••AA POOPOO utilizautiliza oo conceitoconceito dede CLASSECLASSE parapara modelarmodelar ee codificarcodificar osos objetosobjetoscomcom mesmasmesmas CARACTERÍSTICASCARACTERÍSTICAS ee COMPORTAMENTOSCOMPORTAMENTOS ••UmaUma classeclasse éé umum modelomodelo ouou moldemolde parapara criaçãocriação dede objetosobjetos ••UmUm objetoobjeto éé denominadodenominado dede INSTÂNCIAINSTÂNCIA DEDE UMAUMA CLASSECLASSE ••OsOs objetosobjetos sãosão classificadosclassificados conformeconforme suassuas semelhançassemelhanças ••AA POOPOO utilizautiliza oo conceitoconceito dede CLASSECLASSE parapara modelarmodelar ee codificarcodificar osos objetosobjetos comcom mesmasmesmas CARACTERÍSTICASCARACTERÍSTICAS ee COMPORTAMENTOSCOMPORTAMENTOS ••UmaUma classeclasse éé umum modelomodelo ouou moldemolde parapara criaçãocriação dede objetosobjetos ••UmUm objetoobjeto éé denominadodenominado dede INSTÂNCIAINSTÂNCIA DEDE UMAUMA CLASSECLASSE POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSESCLASSES ••OsOs objetosobjetos sãosão classificadosclassificados conformeconforme suassuas semelhançassemelhanças ••AA POOPOO utilizautiliza oo conceitoconceito dede CLASSECLASSE parapara modelarmodelar ee codificarcodificar osos objetosobjetos comcom mesmasmesmas CARACTERÍSTICASCARACTERÍSTICAS ee COMPORTAMENTOSCOMPORTAMENTOS ••UmaUma classeclasse éé umum modelomodelo parapara criaçãocriação dede objetosobjetos ••UmUm objetoobjeto éé denominadodenominado dede INSTÂNCIAINSTÂNCIA DEDE UMAUMA CLASSECLASSE INSTÂNCIA É O SINÔNIMOINSTÂNCIA É O SINÔNIMO DE OBJETO.DE OBJETO. UM OJETO ÉUM OJETO É UMA INSTÂNCIA DE UMAUMA INSTÂNCIA DE UMA DETERMINADA CLASSEDETERMINADA CLASSE INSTÂNCIA É O SINÔNIMOINSTÂNCIA É O SINÔNIMO DE OBJETO.DE OBJETO. UM OJETO ÉUM OJETO É UMA INSTÂNCIA DE UMAUMA INSTÂNCIA DE UMA DETERMINADA CLASSEDETERMINADA CLASSE ••OsOs objetosobjetos sãosão classificadosclassificados conformeconforme suassuas semelhançassemelhanças ••AA POOPOO utilizautiliza oo conceitoconceito dede CLASSECLASSE parapara modelarmodelar ee codificarcodificar osos objetosobjetos comcom mesmasmesmas CARACTERÍSTICASCARACTERÍSTICAS ee COMPORTAMENTOSCOMPORTAMENTOS ••UmaUma classeclasse éé umum modelomodelo parapara criaçãocriação dede objetosobjetos ••UmUm objetoobjeto éé denominadodenominado dede INSTÂNCIAINSTÂNCIA DEDE UMAUMA CLASSECLASSE INSTÂNCIA É O SINÔNIMOINSTÂNCIA É O SINÔNIMO DE OBJETO.DE OBJETO. UM OJETO ÉUM OJETO É UMA INSTÂNCIA DE UMAUMA INSTÂNCIA DE UMA DETERMINADA CLASSEDETERMINADA CLASSE INSTÂNCIA É O SINÔNIMOINSTÂNCIA É O SINÔNIMO DE OBJETO.DE OBJETO. UM OJETO ÉUM OJETO É UMA INSTÂNCIA DE UMAUMA INSTÂNCIA DE UMA DETERMINADA CLASSEDETERMINADA CLASSE POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSESCLASSESCLASSESCLASSES NÃONÃO ESQUEÇAESQUEÇA:: ANTESANTES DEDE UMUM OBJETOOBJETO SERSER CRIADOCRIADO DEVEMOSDEVEMOS DEFINIRDEFINIR SEUSSEUS ATRIBUTOSATRIBUTOS EE SEUSSEUS MÉTODOSMÉTODOS ESSAESSA DEFINIÇÃODEFINIÇÃO ÉÉ REALIZADAREALIZADA EMEM UMAUMA CLASSECLASSE NÃONÃO ESQUEÇAESQUEÇA:: ANTESANTES DEDE UMUM OBJETOOBJETO SERSER CRIADOCRIADO DEVEMOSDEVEMOS DEFINIRDEFINIR SEUSSEUS ATRIBUTOSATRIBUTOS EE SEUSSEUS MÉTODOSMÉTODOS ESSAESSA DEFINIÇÃODEFINIÇÃO ÉÉ REALIZADAREALIZADA EMEM UMAUMA CLASSECLASSE POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSESCLASSESCLASSESCLASSES CONSIDERANDOCONSIDERANDO QUEQUE UMUM OBJETOOBJETO ÉÉ UMAUMA VARIÁVEL,VARIÁVEL, ENTÃOENTÃO OO TIPOTIPO DESSADESSA VARIÁVELVARIÁVEL ÉÉ AA PRÓPRIAPRÓPRIA CLASSECLASSE QUEQUE MODELAMODELA OO OBJETOOBJETO ÉÉ PORPOR ISSOISSO QUEQUE UMUM OBJETOOBJETO ÉÉ UMAUMA INSTÂNCIAINSTÂNCIA DEDE UMAUMA CLASSECLASSE CONSIDERANDOCONSIDERANDO QUEQUE UMUM OBJETOOBJETO ÉÉ UMAUMA VARIÁVEL,VARIÁVEL, ENTÃOENTÃO OO TIPOTIPO DESSADESSA VARIÁVELVARIÁVEL ÉÉ AA PRÓPRIAPRÓPRIA CLASSECLASSE QUEQUE MODELAMODELA OO OBJETOOBJETO ÉÉ PORPOR ISSOISSO QUEQUE UMUM OBJETOOBJETO ÉÉ UMAUMA INSTÂNCIAINSTÂNCIA DEDE UMAUMA CLASSECLASSE POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSES JAVACLASSES JAVA Cada programa Java é uma classeCada programa Java é uma classeCada programa Java é uma classeCada programa Java é uma classe Lembre que: Um programa Java compilado tem a extensãoLembre que: Um programa Java compilado tem a extensão .class.classLembre que: Um programa Java compilado tem a extensãoLembre que: Um programa Java compilado tem a extensão .class.class Não esqueça: Cada programa fonte em Java tem a extensãoNão esqueça: Cada programa fonte em Java tem a extensão .java.javaNão esqueça: Cada programa fonte em Java tem a extensãoNão esqueça: Cada programa fonte em Java tem a extensão .java.java Lembre que: Um programa Java compilado tem a extensãoLembre que: Um programa Java compilado tem a extensão .class.classLembre que: Um programa Java compilado tem a extensãoLembre que: Um programa Java compilado tem a extensão .class.class EXEMPLO DEEXEMPLO DE CLASSECLASSE CODIFICADACODIFICADA EM JAVAEM JAVA POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSES JAVA E OBJETOSCLASSES JAVA E OBJETOS Todo programa Java é uma classeTodo programa Java é uma classe Uma aplicação Java orientada a objetos poderá conter várias classesUma aplicação Java orientada a objetos poderá conter várias classes Só uma dessas classes possuirá oSó uma dessas classes possuirá o publicpublic staticstatic voidvoid mainmain(....)(....) Essa classe é o programa principal da aplicaçãoEssa classe é o programa principal da aplicação As demais classes serão modelos ou moldes dos objetos da aplicaçãoAs demais classes serão modelos ou moldes dos objetos da aplicação Qualquer classe poderá instanciar objetos de outra classeQualquer classe poderá instanciar objetos de outra classe Uma classe, em certas situações, poderá instanciar os seus próprios objetosUma classe, em certas situações, poderá instanciar os seus próprios objetos Em Java, a criação de um objetoEm Java, a criação de um objeto objxobjx de uma classede uma classe ClasseXClasseX possui o seguintepossui o seguinte formato:formato: ClasseXClasseX objxobjx == newnew ClasseXClasseX();(); Todo programa Java é uma classeTodo programa Java é uma classe Uma aplicação Java orientada a objetos poderá conter várias classesUma aplicação Java orientada a objetos poderá conter várias classes Só uma dessas classes possuirá oSó uma dessas classes possuirá o publicpublic staticstatic voidvoid mainmain(....)(....) Essa classe é o programa principal da aplicaçãoEssa classe é o programa principal da aplicação As demais classes serão modelos ou moldes dos objetos da aplicaçãoAs demais classes serão modelos ou moldes dos objetos da aplicação Qualquer classe poderá instanciar objetos de outra classeQualquer classe poderá instanciar objetos de outra classe Uma classe, em certas situações, poderá instanciar os seus próprios objetosUma classe, em certas situações, poderá instanciar os seus próprios objetos Em Java, a criação de um objetoEm Java, a criação de um objeto objxobjx de uma classede uma classe ClasseXClasseX possui o seguintepossui o seguinte formato:formato: ClasseXClasseX objxobjx == newnew ClasseXClasseX();(); POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSES JAVA E OBJETOSCLASSES JAVA E OBJETOS Seja uma aplicação que permite acessar dados de pessoas.Seja uma aplicação que permite acessar dados de pessoas. Neste caso, a aplicação terá duas classesNeste caso, a aplicação terá duas classes A classe principal e uma classe para modelar objetos de pessoasA classe principal e uma classe para modelar objetos de pessoas Exemplo de codificação da aplicação:Exemplo de codificação da aplicação: class Pessoa{ String nome; int idade; } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; } } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; } } Esta classe é o molde para objetos pessoa Esta classe é o molde para objetos pessoa class Pessoa{ String nome; int idade; } class Principal {class Principal { publicstatic void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; } } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; } } Na codificação Java para se acessar (ou alterar) o conteúdo de um atributo de um determinado objeto, de uma forma geral, deve-se informar o objeto seguido de ponto(.), que é seguido pelo nome do atributo Na codificação Java para se acessar (ou alterar) o conteúdo de um atributo de um determinado objeto, de uma forma geral, deve-se informar o objeto seguido de ponto(.), que é seguido pelo nome do atributo Esta é a classe principal da aplicação. Ela possui main() POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSES JAVA E OBJETOSCLASSES JAVA E OBJETOS Complementos sobre a aplicaçãoComplementos sobre a aplicação class Pessoa{ String nome; int idade; } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; } } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; } } class Pessoa{ String nome; int idade; } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; } } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; } } Instanciação do objeto pp da classe PessoaPessoa Instanciação do objeto pp da classe PessoaPessoa POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSES JAVA E OBJETOSCLASSES JAVA E OBJETOS Melhorando a aplicação.Melhorando a aplicação. Escrevendo os dados do objeto PessoaEscrevendo os dados do objeto Pessoa class Pessoa{ String nome; int idade; } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; String s =“Nome=“+String s =“Nome=“+p.nome+”p.nome+”\\n”;n”; s = s+”Idade=“+s = s+”Idade=“+p.idade;p.idade; System.System.out.printout.print(s)(s) } } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; String s =“Nome=“+String s =“Nome=“+p.nome+”p.nome+”\\n”;n”; s = s+”Idade=“+s = s+”Idade=“+p.idade;p.idade; System.System.out.printout.print(s)(s) } } class Pessoa{ String nome; int idade; } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; String s =“Nome=“+String s =“Nome=“+p.nome+”p.nome+”\\n”;n”; s = s+”Idade=“+s = s+”Idade=“+p.idade;p.idade; System.System.out.printout.print(s)(s) } } class Principal {class Principal { public static void main(String[] args) { Pessoa p = new Pessoa(); p.nome = “Nome de Teste”; p.idade= 25; String s =“Nome=“+String s =“Nome=“+p.nome+”p.nome+”\\n”;n”; s = s+”Idade=“+s = s+”Idade=“+p.idade;p.idade; System.System.out.printout.print(s)(s) } } Concatena os conteúdos de cada atributo do objeto pp na variável String ss Concatena os conteúdos de cada atributo do objeto pp na variável String ss POOPOO -- FUNDAMENTOSFUNDAMENTOS CLASSES JAVA E OBJETOSCLASSES JAVA E OBJETOS –– Exercício de FixaçãoExercício de Fixação ElaboreElabore umauma aplicaçãoaplicação queque permitapermita criarcriar doisdois objetosobjetos dede umauma classeclasse Carro,Carro, sendosendo queque essaessa classeclasse possuipossui osos seguintesseguintes atributosatributos:: marcamarca (String),(String), modelo(String),modelo(String), marcha(int),marcha(int), ano(int)ano(int).. AA aplicaçãoaplicação deverádeverá solicitarsolicitar osos conteúdosconteúdos dede cadacada atributoatributo pelopelo tecladoteclado e,e, emem seguida,seguida, devedeve escreverescrever osos conteúdosconteúdos dede cadacada atributoatributo dosdos doisdois objetosobjetos criadoscriados.. ElaboreElabore umauma aplicaçãoaplicação queque permitapermita criarcriar doisdois objetosobjetos dede umauma classeclasse Carro,Carro, sendosendo queque essaessa classeclasse possuipossui osos seguintesseguintes atributosatributos:: marcamarca (String),(String), modelo(String),modelo(String), marcha(int),marcha(int), ano(int)ano(int).. AA aplicaçãoaplicação deverádeverá solicitarsolicitar osos conteúdosconteúdos dede cadacada atributoatributo pelopelo tecladoteclado e,e, emem seguida,seguida, devedeve escreverescrever osos conteúdosconteúdos dede cadacada atributoatributo dosdos doisdois objetosobjetos criadoscriados.. POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOSCOMPORTAMENTOS Um comportamento expressa uma ação que um objeto ou instânciaUm comportamento expressa uma ação que um objeto ou instância de uma classe pode executarde uma classe pode executar Um comportamento expressa uma ação que um objeto ou instânciaUm comportamento expressa uma ação que um objeto ou instância de uma classe pode executarde uma classe pode executar Na POO um comportamento é expresso através deNa POO um comportamento é expresso através de MÉTODOSMÉTODOSNa POO um comportamento é expresso através deNa POO um comportamento é expresso através de MÉTODOSMÉTODOS Um método é um bloco de código entre chaves que fica dentro deUm método é um bloco de código entre chaves que fica dentro de uma classeuma classe Um método é um bloco de código entre chaves que fica dentro deUm método é um bloco de código entre chaves que fica dentro de uma classeuma classe Um método é um bloco de código entre chaves que fica dentro deUm método é um bloco de código entre chaves que fica dentro de uma classeuma classe Um método é um bloco de código entre chaves que fica dentro deUm método é um bloco de código entre chaves que fica dentro de uma classeuma classe Um método necessita de umUm método necessita de um IDENTIFICADORIDENTIFICADOR (um nome)(um nome) , de, de UMUM TIPO QUE O DEFINA, UMA LISTA DE PARÂMETROS E DE RETORNOTIPO QUE O DEFINA, UMA LISTA DE PARÂMETROS E DE RETORNO Um método necessita de umUm método necessita de um IDENTIFICADORIDENTIFICADOR (um nome)(um nome) , de, de UMUM TIPO QUE O DEFINA, UMA LISTA DE PARÂMETROS E DE RETORNOTIPO QUE O DEFINA, UMA LISTA DE PARÂMETROS E DE RETORNO O identificador de um método é constituído da mesma forma que oO identificador de um método é constituído da mesma forma que o identificador de variáveisidentificador de variáveis (regra(regra CamelCamel Case)Case) O identificador de um método é constituído da mesma forma que oO identificador de um método é constituído da mesma forma que o identificador de variáveisidentificador de variáveis (regra(regra CamelCamel Case)Case) Formato geral de um métodoFormato geral de um método tipotipo nomeMetodonomeMetodo((par1par1 ,, par2par2) {//corpo do método}) {//corpo do método} Formato geral de um métodoFormato geral de um método tipotipo nomeMetodonomeMetodo((par1par1 ,, par2par2) {//corpo do método}) {//corpo do método} POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOSCOMPORTAMENTOS Um comportamento expressa uma ação que um objeto ou instânciaUm comportamento expressa uma ação que um objeto ou instância de uma classe pode executarde uma classe pode executar Um comportamento expressa uma ação que um objeto ou instânciaUm comportamento expressa uma ação que um objeto ou instância de uma classe pode executarde uma classe pode executar Na POO um comportamento é expresso através deNa POO um comportamento é expresso através de MÉTODOSMÉTODOSNa POO um comportamento é expresso através deNa POO um comportamento é expresso através de MÉTODOSMÉTODOS Um método é um bloco de código entre chaves que fica dentro deUm método é um bloco de código entre chavesque fica dentro de uma classeuma classe Um método é um bloco de código entre chaves que fica dentro deUm método é um bloco de código entre chaves que fica dentro de uma classeuma classe No caso de ocorrer a necessidade e retorno de algumaNo caso de ocorrer a necessidade e retorno de alguma informação para o local que chamou o método, utilizainformação para o local que chamou o método, utiliza--sese qualquer tipo de dado da linguagem Java (qualquer tipo de dado da linguagem Java (intint,, longlong,, floatfloat,, doubledouble,, charchar, String e diversos outros)., String e diversos outros). Caso não há necessidade de retorno de informações, o tipoCaso não há necessidade de retorno de informações, o tipo do método édo método é voidvoid Exemplos:Exemplos: intint somaValoressomaValores((intint x,x, intint y){......}y){......} voidvoid mostraMensagemmostraMensagem(String(String msgmsg){......}){......} No caso de ocorrer a necessidade e retorno de algumaNo caso de ocorrer a necessidade e retorno de alguma informação para o local que chamou o método, utilizainformação para o local que chamou o método, utiliza--sese qualquer tipo de dado da linguagem Java (qualquer tipo de dado da linguagem Java (intint,, longlong,, floatfloat,, doubledouble,, charchar, String e diversos outros)., String e diversos outros). Caso não há necessidade de retorno de informações, o tipoCaso não há necessidade de retorno de informações, o tipo do método édo método é voidvoid Exemplos:Exemplos: intint somaValoressomaValores((intint x,x, intint y){......}y){......} voidvoid mostraMensagemmostraMensagem(String(String msgmsg){......}){......} Um método é um bloco de código entre chaves que fica dentro deUm método é um bloco de código entre chaves que fica dentro de uma classeuma classe Um método é um bloco de código entre chaves que fica dentro deUm método é um bloco de código entre chaves que fica dentro de uma classeuma classe Um método necessita de umUm método necessita de um IDENTIFICADORIDENTIFICADOR (um nome)(um nome) , de, de UMUM TIPO QUE O DEFINA, UMA LISTA DE PARÂMETROS E DE RETORNOTIPO QUE O DEFINA, UMA LISTA DE PARÂMETROS E DE RETORNO Um método necessita de umUm método necessita de um IDENTIFICADORIDENTIFICADOR (um nome)(um nome) , de, de UMUM TIPO QUE O DEFINA, UMA LISTA DE PARÂMETROS E DE RETORNOTIPO QUE O DEFINA, UMA LISTA DE PARÂMETROS E DE RETORNO O identificador de um método é constituído da mesma forma que oO identificador de um método é constituído da mesma forma que o identificador de variáveisidentificador de variáveis (regra(regra CamelCamel Case)Case) O identificador de um método é constituído da mesma forma que oO identificador de um método é constituído da mesma forma que o identificador de variáveisidentificador de variáveis (regra(regra CamelCamel Case)Case) Formato geral de um métodoFormato geral de um método tipotipo nomeMetodonomeMetodo((par1par1 ,, par2par2) {//corpo do método}) {//corpo do método} Formato geral de um métodoFormato geral de um método tipotipo nomeMetodonomeMetodo((par1par1 ,, par2par2) {//corpo do método}) {//corpo do método} No caso de ocorrer a necessidade e retorno de algumaNo caso de ocorrer a necessidade e retorno de alguma informação para o local que chamou o método, utilizainformação para o local que chamou o método, utiliza--sese qualquer tipo de dado da linguagem Java (qualquer tipo de dado da linguagem Java (intint,, longlong,, floatfloat,, doubledouble,, charchar, String e diversos outros)., String e diversos outros). Caso não há necessidade de retorno de informações, o tipoCaso não há necessidade de retorno de informações, o tipo do método édo método é voidvoid Exemplos:Exemplos: intint somaValoressomaValores((intint x,x, intint y){......}y){......} voidvoid mostraMensagemmostraMensagem(String(String msgmsg){......}){......} No caso de ocorrer a necessidade e retorno de algumaNo caso de ocorrer a necessidade e retorno de alguma informação para o local que chamou o método, utilizainformação para o local que chamou o método, utiliza--sese qualquer tipo de dado da linguagem Java (qualquer tipo de dado da linguagem Java (intint,, longlong,, floatfloat,, doubledouble,, charchar, String e diversos outros)., String e diversos outros). Caso não há necessidade de retorno de informações, o tipoCaso não há necessidade de retorno de informações, o tipo do método édo método é voidvoid Exemplos:Exemplos: intint somaValoressomaValores((intint x,x, intint y){......}y){......} voidvoid mostraMensagemmostraMensagem(String(String msgmsg){......}){......} POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOSCOMPORTAMENTOS –– (cont.)(cont.) O tipo de retorno pode ser , por exemplo, umO tipo de retorno pode ser , por exemplo, um inteirointeiro,, decimaldecimal,, StringString,, booleanobooleano,, arrayarray etc. O TIPO SERÁetc. O TIPO SERÁ voidvoid QUANDO NÃO HÁ RETORNOQUANDO NÃO HÁ RETORNO O tipo de retorno pode ser , por exemplo, umO tipo de retorno pode ser , por exemplo, um inteirointeiro,, decimaldecimal,, StringString,, booleanobooleano,, arrayarray etc. O TIPO SERÁetc. O TIPO SERÁ voidvoid QUANDO NÃO HÁ RETORNOQUANDO NÃO HÁ RETORNO A lista de parâmetros poderá ter nenhum, um ou mais de umA lista de parâmetros poderá ter nenhum, um ou mais de um parâmetro.parâmetro. A lista de parâmetros poderá ter nenhum, um ou mais de umA lista de parâmetros poderá ter nenhum, um ou mais de um parâmetro.parâmetro. //trecho de uma classe//trecho de uma classe voidvoid mostraMensagemmostraMensagem(){(){ System.System.out.printlnout.println(“teste”);(“teste”); }} voidvoid mostraMensagemmostraMensagem(String s){(String s){ System.System.out.printlnout.println(s);(s); }} intint soma(int a, int b){soma(int a, int b){ int resultado = a+b;int resultado = a+b; returnreturn resultado;resultado; }} //trecho de uma classe//trecho de uma classe voidvoid mostraMensagemmostraMensagem(){(){ System.System.out.printlnout.println(“teste”);(“teste”); }} voidvoid mostraMensagemmostraMensagem(String s){(String s){ System.System.out.printlnout.println(s);(s); }} intint soma(int a, int b){soma(int a, int b){ int resultado = a+b;int resultado = a+b; returnreturn resultado;resultado; }} Tipo void. Sem retorno e sem parâmetrosTipo void. Sem retorno e sem parâmetros //trecho de uma classe//trecho de uma classe voidvoid mostraMensagemmostraMensagem(){(){ System.System.out.printlnout.println(“teste”);(“teste”); }} voidvoid mostraMensagemmostraMensagem(String s){(String s){ System.System.out.printlnout.println(s);(s); }} intint soma(int a, int b){soma(int a, int b){ int resultado = a+b;int resultado = a+b; returnreturn resultado;resultado; }} //trecho de uma classe//trecho de uma classe voidvoid mostraMensagemmostraMensagem(){(){ System.System.out.printlnout.println(“teste”);(“teste”); }} voidvoid mostraMensagemmostraMensagem(String s){(String s){ System.System.out.printlnout.println(s);(s); }} intint soma(int a, int b){soma(int a, int b){ int resultado = a+b;int resultado = a+b; returnreturn resultado;resultado; }} Tipo void. Sem retorno e sem parâmetros Tipo void. Sem retorno. Possui o parâmetro ss do tipo String Tipo int. Possui retorno. Possui os parâmetros aa e bb, inteiros. Retorna o int resultadoresultado Tipo int. Possui retorno. Possui os parâmetros aa e bb, inteiros. Retorna o int resultadoresultado POOPOO -- FUNDAMENTOSFUNDAMENTOS ••OO própriopróprio objetoobjeto realizarealiza operaçõesoperações dede consultaconsulta ouou alteraçãoalteração dosdos valoresvalores dosdos seusseus atributosatributos ••EssasEssas operaçõesoperações sãosão definidasdefinidas emem seusseus métodosmétodos ••OsOs métodosmétodos tambémtambém sãosão utilizadosutilizados parapara possibilitarpossibilitar interaçõesinterações entreentre osos objetosobjetos dede umauma aplicaçãoaplicação (TROCA(TROCA DEDE MENSAGENS)MENSAGENS)••PorPor exemplo,exemplo, quandoquando umum clientecliente requisitarequisita umum saquesaque atravésatravés dede umum caixacaixa eletrônicoeletrônico dodo banco,banco, oo objetoobjeto queque representarepresenta oo caixacaixa eletrônicoeletrônico devedeve interagirinteragir comcom oo objetoobjeto queque representarepresenta aa contaconta dodo clientecliente ••NÃONÃO ESQUEÇAESQUEÇA:: ASAS TAREFASTAREFAS DEDE UMUM OBJETOOBJETO SÃOSÃO DEFINIDASDEFINIDAS EMEM SEUSSEUS MÉTODOSMÉTODOS COMPORTAMENTOSCOMPORTAMENTOS -- ObservaçõesObservações ••OO própriopróprio objetoobjeto realizarealiza operaçõesoperações dede consultaconsulta ouou alteraçãoalteração dosdos valoresvalores dosdos seusseus atributosatributos ••EssasEssas operaçõesoperações sãosão definidasdefinidas emem seusseus métodosmétodos ••OsOs métodosmétodos tambémtambém sãosão utilizadosutilizados parapara possibilitarpossibilitar interaçõesinterações entreentre osos objetosobjetos dede umauma aplicaçãoaplicação (TROCA(TROCA DEDE MENSAGENS)MENSAGENS) ••PorPor exemplo,exemplo, quandoquando umum clientecliente requisitarequisita umum saquesaque atravésatravés dede umum caixacaixa eletrônicoeletrônico dodo banco,banco, oo objetoobjeto queque representarepresenta oo caixacaixa eletrônicoeletrônico devedeve interagirinteragir comcom oo objetoobjeto queque representarepresenta aa contaconta dodo clientecliente ••NÃONÃO ESQUEÇAESQUEÇA:: ASAS TAREFASTAREFAS DEDE UMUM OBJETOOBJETO SÃOSÃO DEFINIDASDEFINIDAS EMEM SEUSSEUS MÉTODOSMÉTODOS POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOS (MÉTODOS)COMPORTAMENTOS (MÉTODOS) –– COMO FUNCIONAMCOMO FUNCIONAM ConsidereConsidere umauma aplicaçãoaplicação simplessimples queque possuipossui 0303 classesclasses:: AA classeclasse principalprincipal (Principal(Principal..javajava),), ReciboRecibo..javajava ee ChequeCheque..javajava.. AA classeclasse principalprincipal “chama”“chama” asas outrasoutras duasduas classes,classes, queque sãosão utilizadasutilizadas parapara imprimir,imprimir, respectivamente,respectivamente, recibosrecibos ee chequescheques que,que, alémalém dede outrasoutras informações,informações, imprimirãoimprimirão oo valorvalor informadoinformado porpor extensoextenso.. NoNo entanto,entanto, oo programadorprogramador nãonão necessitanecessita codificarcodificar duasduas vezesvezes aa mesmamesma rotinarotina parapara escreverescrever oo valorvalor porpor extensoextenso parapara essasessas duasduas classesclasses.. BastaBasta escreverescrever umauma vezvez ee referenciarreferenciar oo mesmomesmo códigocódigo parapara imprimirimprimir osos respectivosrespectivos valoresvalores porpor extensoextenso.. Assim,Assim, podepode--sese utilizarutilizar umum métodométodo queque verificaverifica oo valorvalor informadoinformado ee retornaretorna esseesse valorvalor porpor extensoextenso emem umauma StringString.. ObserveObserve aa ilustraçãoilustração aa seguirseguir:: Principal.java Recibo.java Cheque.java extenso(); aa aa bb bb cc cc dd dd POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOS (MÉTODOS)COMPORTAMENTOS (MÉTODOS) –– COMO FUNCIONAM (cont.)COMO FUNCIONAM (cont.) Assim,Assim, oo métodométodo extenso()extenso() deverádeverá ficarficar emem algumaalguma classeclasse específicaespecífica.. EssaEssa classe,classe, entãoentão éé referenciadareferenciada pelaspelas classesclasses ReciboRecibo..javajava ee ChequeCheque..javajava.. EsseEsse métodométodo podepode estarestar definidodefinido nana classeclasse principalprincipal ouou emem outraoutra classeclasse.. ConsiderandoConsiderando queque esseesse métodométodo estejaesteja emem outraoutra classe,classe, denominadadenominada dede UtilUtil..javajava,, entãoentão temostemos:: classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} NoteNote queque oo métodométodo extensoextenso possuipossui umum tipotipo StringString nana suasua declaraçãodeclaração (a(a StringString retornoExtensoretornoExtenso)).. AA StringString retornadaretornada éé aa variávelvariável retornoExtensoretornoExtenso,, definidadefinida dentrodentro dodo métodométodo QuandoQuando umum métodométodo nãonão retornaretorna nenhumnenhum conteúdo,conteúdo, eleele teráterá oo tipotipo voidvoid ee nãonão teráterá nenhumnenhum comandocomando returnreturn emem seuseu interiorinterior.. ExemploExemplo:: voidvoid somasoma (int(int a,a, intint b)b) {{........................}} Tipo do métodoTipo do método extensoextenso Retorno do métodoRetorno do método extensoextenso Assim,Assim, oo métodométodo extenso()extenso() deverádeverá ficarficar emem algumaalguma classeclasse específicaespecífica.. EssaEssa classe,classe, entãoentão éé referenciadareferenciada pelaspelas classesclasses ReciboRecibo..javajava ee ChequeCheque..javajava.. EsseEsse métodométodo podepode estarestar definidodefinido nana classeclasse principalprincipal ouou emem outraoutra classeclasse.. ConsiderandoConsiderando queque esseesse métodométodo estejaesteja emem outraoutra classe,classe, denominadadenominada dede UtilUtil..javajava,, entãoentão temostemos:: classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} NoteNote queque oo métodométodo extensoextenso possuipossui umum tipotipo StringString nana suasua declaraçãodeclaração (a(a StringString retornoExtensoretornoExtenso)).. AA StringString retornadaretornada éé aa variávelvariável retornoExtensoretornoExtenso,, definidadefinida dentrodentro dodo métodométodo QuandoQuando umum métodométodo nãonão retornaretorna nenhumnenhum conteúdo,conteúdo, eleele teráterá oo tipotipo voidvoid ee nãonão teráterá nenhumnenhum comandocomando returnreturn emem seuseu interiorinterior.. ExemploExemplo:: voidvoid somasoma (int(int a,a, intint b)b) {{........................}} Retorno do métodoRetorno do método extensoextensoRetorno do métodoRetorno do método extensoextenso O métodoO método somasoma não tem retorno,não tem retorno, pois seu tipo épois seu tipo é voidvoid Possui 2 parâmetros, separadosPossui 2 parâmetros, separados por vírgulapor vírgula Possui 2 parâmetros, separadosPossui 2 parâmetros, separados por vírgulapor vírgula POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOS (MÉTODOS)COMPORTAMENTOS (MÉTODOS) –– COMO FUNCIONAM (cont.)COMO FUNCIONAM (cont.) Assim,Assim, asas classesclasses ReciboRecibo..javajava ee ChequeCheque..javajava acessamacessam oo métodométodo extenso()extenso() dada classeclasse UtilUtil..javajava.. ObserveObserve aa ilustraçãoilustração apenasapenas comcom aa classeclasse ReciboRecibo..javajava.. classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} Class Recibo{ float valorEmReal= ..... //Recebe digitação do valor //usuário digita valor e este é armazenado na variável // valorEmReal Util u = new Util(); String valorExtenso = u. extenso(valorEmReal) ; //trecho de codigo que imprime o recibo usando a variável valorExtenso } classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;;returnreturn retornoExtensoretornoExtenso;; }} classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} Class Recibo{ float valorEmReal= ..... //Recebe digitação do valor //usuário digita valor e este é armazenado na variável // valorEmReal Util u = new Util(); String valorExtenso = u. extenso(valorEmReal) ; //trecho de codigo que imprime o recibo usando a variável valorExtenso } Class Recibo{ float valorEmReal= .....// Recebe digitação do valor //usuário digita valor e este é armazenado na variável // valorEmReal Util u = new Util(); String valorExtenso = u. extenso(valorEmReal) ; //trecho de codigo que imprime o recibo usando a variável valorExtenso } POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOS (MÉTODOS)COMPORTAMENTOS (MÉTODOS) –– COMO FUNCIONAM (cont.)COMO FUNCIONAM (cont.) classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} Um método pode ter ou não parâmetros. O método extenso()extenso() possui um parâmetro do tipo floatfloat. Assim, ele recebe um valor (que também deve ser do mesmo tipo). O método Extenso()Extenso() retorna uma String porque ele foi definido como String extenso(...); Por isso, quando um método é definido com o tipo void, como voidvoid nome_metodonome_metodo, ele não efetua nenhum retorno. Class Recibo{ float valorEmReal= .....// Recebe digitação do valor //usuário digita valor e este é armazenado na variável // valorEmReal Util u = new Util(); String valorExtenso = u. extenso(valorEmReal) ; //trecho de codigo que imprime o recibo usando a variável valorExtenso } classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} Class Recibo{ float valorEmReal= .....// Recebe digitação do valor //usuário digita valor e este é armazenado na variável // valorEmReal UtilUtil uu == newnew UtilUtil()();; String valorExtenso = u. extenso(valorEmReal) ; //trecho de codigo que imprime o recibo usando a variável valorExtenso } POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOS (MÉTODOS)COMPORTAMENTOS (MÉTODOS) –– COMO FUNCIONAM (cont.)COMO FUNCIONAM (cont.) classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} Para que a classe Recibo.Para que a classe Recibo.javajava acesse o método da classeacesse o método da classe Util.javaUtil.java é necessárioé necessário instanciarinstanciar Util.javaUtil.java na classe Recibo.na classe Recibo.javajava.. Assim, criouAssim, criou--se o objetose o objeto uu que é uma instância da classeque é uma instância da classe Util.javaUtil.java.. UtilUtil u =u = newnew UtilUtil();(); Class Recibo{ float valorEmReal= .....// Recebe digitação do valor //usuário digita valor e este é armazenado na variável // valorEmReal UtilUtil uu == newnew UtilUtil()();; String valorExtenso = u. extenso(valorEmReal) ; //trecho de codigo que imprime o recibo usando a variável valorExtenso } classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} classclass UtilUtil {{ StringString extenso(extenso(floatfloat valor)valor) {{ ////codigocodigo dodo métodométodo extensoextenso ............ StringString retornoExtensoretornoExtenso=“=“..............””;; returnreturn retornoExtensoretornoExtenso;; }} Objeto uu acessa o método extensoextenso POOPOO -- FUNDAMENTOSFUNDAMENTOS UMLUML --NOÇÕESNOÇÕES A UML (Linguagem de Modelagem Unificada) permite ao analista /A UML (Linguagem de Modelagem Unificada) permite ao analista / projetista de software delinear o projeto através de diagramasprojetista de software delinear o projeto através de diagramas Cada diagrama representa detalhes específicosCada diagrama representa detalhes específicos Alguns tipos de diagramas da UML:Alguns tipos de diagramas da UML: ••Diagrama de casos de usoDiagrama de casos de uso ••Diagrama de classesDiagrama de classes ••Diagrama deDiagrama de sequênciasequência ••Diagrama de objetosDiagrama de objetos A UML (Linguagem de Modelagem Unificada) permite ao analista /A UML (Linguagem de Modelagem Unificada) permite ao analista / projetista de software delinear o projeto através de diagramasprojetista de software delinear o projeto através de diagramas Cada diagrama representa detalhes específicosCada diagrama representa detalhes específicos Alguns tipos de diagramas da UML:Alguns tipos de diagramas da UML: ••Diagrama de casos de usoDiagrama de casos de uso ••Diagrama de classesDiagrama de classes ••Diagrama deDiagrama de sequênciasequência ••Diagrama de objetosDiagrama de objetos POOPOO -- FUNDAMENTOSFUNDAMENTOS REPRESENTAÇÃO DE CLASSES JAVA / UMLREPRESENTAÇÃO DE CLASSES JAVA / UML Pessoa String: nome int: idade String : cpf String : profissao andar() dancar() trabalhar() class Pessoaclass Pessoa {{ String nome;String nome; int idade;int idade; String cpf;String cpf; String profissao;String profissao; void andar(){....}void andar(){....} int dancar(){......}int dancar(){......} String trabalhar(){.....}String trabalhar(){.....} }} Nome da classe OBJETO PESSOAOBJETO PESSOA Pessoa String: nome int: idade String : cpf String : profissao andar() dancar() trabalhar() class Pessoaclass Pessoa {{ String nome;String nome; int idade;int idade; String cpf;String cpf; String profissao;String profissao; void andar(){....}void andar(){....} int dancar(){......}int dancar(){......} String trabalhar(){.....}String trabalhar(){.....} }} REPRESENTAÇÃOREPRESENTAÇÃO UMLUML REPRESENTAÇÃOREPRESENTAÇÃO CÓDIGO JAVACÓDIGO JAVA atributos métodos POOPOO -- FUNDAMENTOSFUNDAMENTOS Carro String: marca int: ano String : modelo int: potencia Int: velocidade andar() mudarMarcha() alterarVelocidade() class Carroclass Carro {{ String marca;String marca; int ano;int ano; String modelo;String modelo; int potencia;int potencia; int velocidade;int velocidade; void andar(){....}void andar(){....} int mudarMarcha(){......}int mudarMarcha(){......} int alterarVelocidade(){.....}int alterarVelocidade(){.....} }} Nome da classe OBJETO CARROOBJETO CARRO REPRESENTAÇÃO DE CLASSES JAVA / UMLREPRESENTAÇÃO DE CLASSES JAVA / UML Carro String: marca int: ano String : modelo int:potencia Int: velocidade andar() mudarMarcha() alterarVelocidade() class Carroclass Carro {{ String marca;String marca; int ano;int ano; String modelo;String modelo; int potencia;int potencia; int velocidade;int velocidade; void andar(){....}void andar(){....} int mudarMarcha(){......}int mudarMarcha(){......} int alterarVelocidade(){.....}int alterarVelocidade(){.....} }} REPRESENTAÇÃOREPRESENTAÇÃO UMLUML REPRESENTAÇÃOREPRESENTAÇÃO CÓDIGO JAVACÓDIGO JAVA atributos métodos POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOSCOMPORTAMENTOS –– cont.cont. Um parâmetro possui umUm parâmetro possui um TIPOTIPO e ume um IDENTIFICADORIDENTIFICADORUm parâmetro possui umUm parâmetro possui um TIPOTIPO e ume um IDENTIFICADORIDENTIFICADOR Um parâmetro recebe valores de outros locais da aplicaçãoUm parâmetro recebe valores de outros locais da aplicaçãoUm parâmetro recebe valores de outros locais da aplicaçãoUm parâmetro recebe valores de outros locais da aplicação Quando existir mais de um parâmetro, deveQuando existir mais de um parâmetro, deve--se separáse separá--los por vírgulalos por vírgulaQuando existir mais de um parâmetro, deveQuando existir mais de um parâmetro, deve--se separáse separá--los por vírgulalos por vírgula Tipo doTipo do retornoretorno Tipo doTipo do retornoretorno O uso de parâmetro em um método éO uso de parâmetro em um método é opcional, depende da necessidadeopcional, depende da necessidade UseUse returnreturn parapara retornar umretornar um conteúdoconteúdo UseUse returnreturn parapara retornar umretornar um conteúdoconteúdo POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOSCOMPORTAMENTOS –– cont.cont. Tipo doTipo do retornoretorno Tipo doTipo do retornoretorno classclass TesteTeste {{ String extenso(String extenso(doubledouble v,v, intint x)x) {{ String extenso;String extenso; // instruções// instruções returnreturn extenso;extenso; }} }} classclass TesteTeste {{ String extenso(String extenso(doubledouble v,v, intint x)x) {{ String extenso;String extenso; // instruções// instruções returnreturn extenso;extenso; }} }} Possui doisPossui dois parâmetrosparâmetros UseUse returnreturn parapara retornar umretornar um conteúdoconteúdo UseUse returnreturn parapara retornar umretornar um conteúdoconteúdo classclass TesteTeste {{ String extenso(String extenso(doubledouble v,v, intint x)x) {{ String extenso;String extenso; // instruções// instruções returnreturn extenso;extenso; }} }} classclass TesteTeste {{ String extenso(String extenso(doubledouble v,v, intint x)x) {{ String extenso;String extenso; // instruções// instruções returnreturn extenso;extenso; }} }} POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTO / variável localCOMPORTAMENTO / variável local –– cont.cont. ••PodePode--sese criarcriar variáveisvariáveis dentrodentro dede umum métodométodo ••EssasEssas variáveisvariáveis sãosão denominadasdenominadas dede VARIÁVEISVARIÁVEIS LOCAISLOCAIS ••PodePode--sese criarcriar variáveisvariáveis dentrodentro dede umum métodométodo ••EssasEssas variáveisvariáveis sãosão denominadasdenominadas dede VARIÁVEISVARIÁVEIS LOCAISLOCAIS OO ciclociclo dede vidavida dede umauma VARIÁVELVARIÁVEL LOCALLOCAL duradura enquantoenquanto oo métodométodo estiverestiver sendosendo executadoexecutado OO ciclociclo dede vidavida dede umauma VARIÁVELVARIÁVEL LOCALLOCAL duradura enquantoenquanto oo métodométodo estiverestiver sendosendo executadoexecutado OO ciclociclo dede vidavida dede umauma VARIÁVELVARIÁVEL LOCALLOCAL duradura enquantoenquanto oo métodométodo estiverestiver sendosendo executadoexecutado OO ciclociclo dede vidavida dede umauma VARIÁVELVARIÁVEL LOCALLOCAL duradura enquantoenquanto oo métodométodo estiverestiver sendosendo executadoexecutado POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOCOMPORTAMENTO –– MAIS UM EXEMPLOMAIS UM EXEMPLO class Calculo { int x; int y; int total; void somaNumeros(int a, int b) { total = a + b; x = a; y = b; } int produto(int a, int b) { int total = a * b; return total; } } Esse método recebe dois valores inteiros e soma-os, armazenando o resultado no atributo totaltotal da classe CalculoCalculo. Depois, atribui os respectivos valores para os atributos xx e yy Esse método recebe dois valores inteiros e soma-os, armazenando o resultado no atributo totaltotal da classe CalculoCalculo. Depois, atribui os respectivos valores para os atributos xx e yy Note que o método produtoproduto definiu uma variável local como totaltotal,, que possui o mesmo nome do atributo totaltotal da classe. Neste caso, da forma que está, o método reconhece apenas a variável local. class Calculo { int x; int y; int total; void somaNumeros(int a, int b) { total = a + b; x = a; y = b; } int produto(int a, int b) { int total = a * b; return total; } } Esse método recebe dois valores inteiros e efetua o produto entre eles, armazenando o resultado na variável local totaltotal, retornando esse valor Esse método recebe dois valores inteiros e efetua o produto entre eles, armazenando o resultado na variável local totaltotal, retornando esse valor Note que o método produtoproduto definiu uma variável local como totaltotal,, que possui o mesmo nome do atributo totaltotal da classe. Neste caso, da forma que está, o método reconhece apenas a variável local. É possível atribuir o valor da variável totaltotal local ao conteúdo da variável de classe totaltotal ? POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOCOMPORTAMENTO –– MAIS UM EXEMPLO (cont.)MAIS UM EXEMPLO (cont.) Considere o método produtoA indicado na classe Calculo: class Calculo { int x; int y; int total; void produtoA(int a, int b) { int total = a * b; this.total = total; } } A expressão thisthis.total = total;.total = total; atribui o valor da variável local totaltotal à variável de classe totaltotal A distinção entre as duas variáveis (locallocal e de classeclasse) se torna clara devido ao thisthis antes da variável total da classe Assim, quando se deseja referenciar um atributo de uma determinada classe, dentro da própria classe, utiliza-se, opcionalmente, o thisthis seguido do ponto e este seguido pelo nome do atributo Considere o método produtoA indicado na classe Calculo: class Calculo { int x; int y; int total; void produtoA(int a, int b) { int total = a * b; this.total = total; } } A expressão thisthis.total = total;.total = total; atribui o valor da variável local totaltotal à variável de classe totaltotal A distinção entre as duas variáveis (locallocal e de classeclasse) se torna clara devido ao thisthis antes da variável total da classe Assim, quando se deseja referenciar um atributo de uma determinada classe, dentro da própria classe, utiliza-se, opcionalmente, o thisthis seguido do ponto e este seguido pelo nome do atributo thisthis..nome_atributonome_atributo POOPOO -- FUNDAMENTOSFUNDAMENTOS COMPORTAMENTOCOMPORTAMENTO –– MAIS UM EXEMPLOMAIS UM EXEMPLO UsaUsa--se ose o thisthis parapara referenciar asreferenciar as variáveis devariáveis de instânciainstância dentro dadentro da própria classeprópria classe UsaUsa--se ose o thisthis parapara referenciar asreferenciar as variáveis devariáveis de instânciainstância dentro dadentro da própria classeprópria classe class Calculo { int x; int y; int total; void somaNumeros(int a, int b) { total = a + b; x = a; y = b; } int produtoA(int a, int b) { int total = a * b; return total; } void produtoA(int a, int b) { int total = a * b; this.total = total; } } UsaUsa--se ose o thisthis parapara referenciar asreferenciar as variáveis devariáveis de instânciainstância dentro dadentro da própria classeprópria classe UsaUsa--se oseo thisthis parapara referenciar asreferenciar as variáveis devariáveis de instânciainstância dentro dadentro da própria classeprópria classe this . total = total; Pode ser umPode ser um parâmetroparâmetro ou umaou uma variável localvariável local class Calculo { int x; int y; int total; void somaNumeros(int a, int b) { total = a + b; x = a; y = b; } int produtoA(int a, int b) { int total = a * b; return total; } void produtoA(int a, int b) { int total = a * b; this.total = total; } } POOPOO -- FUNDAMENTOSFUNDAMENTOS Exercícios de FixaçãoExercícios de Fixação 1. Elabore um aplicativo que possua a classe Principal.java e a classe Calculo.java. A classe Calculo possui os métodos somar, dividir, multiplicar e subtrair. Todos recebem dois números inteiros como parâmetros e devem retornar um tipo inteiro como resultado da respectiva operação. A classe Principal.java deve instanciar a classe Calculo.java e solicitar dois valores, A e B, pelo teclado e, através dos métodos da classe Calculo.java, calcular cada uma das 04 operações e escrever os respectivos resultados. 2. Considerando a mesma classe Calculo. Java do exercício anterior, crie o programa Principal_01.java que, através de um menu de opções numéricas, efetue a respectiva operação em Calculo.java e apresente o respectivo resultado. O menu deve apresentar as seguintes opções: 1.Adição 2.Subtração 3.Multiplicação 4.Divisão 5.Fim 3. Melhore o aplicativo da questão 2 de tal forma que a classe Calculo.java permita ativar um (novo) método específico, em sua estrutura, que apresente uma mensagem de erro quando uma divisão ou subtração for inválida. A subtração será inválida caso o resultado seja negativo e a operação divisão apresentará um erro quando se tentar dividir por zero. Esse novo método deverá receber uma String como mensagem e escrever a respectiva mensagem , recebida como parâmetro. 1. Elabore um aplicativo que possua a classe Principal.java e a classe Calculo.java. A classe Calculo possui os métodos somar, dividir, multiplicar e subtrair. Todos recebem dois números inteiros como parâmetros e devem retornar um tipo inteiro como resultado da respectiva operação. A classe Principal.java deve instanciar a classe Calculo.java e solicitar dois valores, A e B, pelo teclado e, através dos métodos da classe Calculo.java, calcular cada uma das 04 operações e escrever os respectivos resultados. 2. Considerando a mesma classe Calculo. Java do exercício anterior, crie o programa Principal_01.java que, através de um menu de opções numéricas, efetue a respectiva operação em Calculo.java e apresente o respectivo resultado. O menu deve apresentar as seguintes opções: 1.Adição 2.Subtração 3.Multiplicação 4.Divisão 5.Fim 3. Melhore o aplicativo da questão 2 de tal forma que a classe Calculo.java permita ativar um (novo) método específico, em sua estrutura, que apresente uma mensagem de erro quando uma divisão ou subtração for inválida. A subtração será inválida caso o resultado seja negativo e a operação divisão apresentará um erro quando se tentar dividir por zero. Esse novo método deverá receber uma String como mensagem e escrever a respectiva mensagem , recebida como parâmetro. POOPOO -- FUNDAMENTOSFUNDAMENTOS INSTANCIANDO OBJETOSINSTANCIANDO OBJETOS -- ComplementosComplementos ••UmUm métodométodo construtorconstrutor possuipossui oo mesmomesmo nomenome dada classeclasse ••OO nomenome dodo métodométodo construtorconstrutor sese iniciainicia comcom letraletra maiúsculamaiúscula ••UmUm métodométodo construtorconstrutor éé responsávelresponsável porpor criarcriar objetosobjetos ••UmUm métodométodo construtorconstrutor possuipossui oo mesmomesmo nomenome dada classeclasse ••OO nomenome dodo métodométodo construtorconstrutor sese iniciainicia comcom letraletra maiúsculamaiúscula ••UmUm métodométodo construtorconstrutor éé responsávelresponsável porpor criarcriar objetosobjetos InstanciaçãoInstanciação dede objetosobjetos –– FormatoFormato nomeDaClassenomeDaClasse identificadoridentificador == newnew métodoConstrutor()métodoConstrutor() InstanciaçãoInstanciação dede objetosobjetos –– FormatoFormato nomeDaClassenomeDaClasse identificadoridentificador == newnew métodoConstrutor()métodoConstrutor() InstanciaçãoInstanciação dede objetosobjetos –– FormatoFormato nomeDaClassenomeDaClasse identificadoridentificador == newnew métodoConstrutor()métodoConstrutor() InstanciaçãoInstanciação dede objetosobjetos –– FormatoFormato nomeDaClassenomeDaClasse identificadoridentificador == newnew métodoConstrutor()métodoConstrutor() • Quando uma classe não possui um método construtor, a linguagem Java utiliza o método construtor da classe “responsável” por todas as classes Java, denominada de Object. Neste caso, esse método inicializa todos os atributos da classe com valores padrão (tipos numéricos com zero (0), String com null, booleanos com false). • Quando uma classe não possui um método construtor, a linguagem Java utiliza o método construtor da classe “responsável” por todas as classes Java, denominada de Object. Neste caso, esse método inicializa todos os atributos da classe com valores padrão (tipos numéricos com zero (0), String com null, booleanos com false). POOPOO -- FUNDAMENTOSFUNDAMENTOS INSTANCIANDO OBJETOSINSTANCIANDO OBJETOS –– Complementos (Complementos (contcont)) public INDICA QUE O ELEMENTO PODE SER ACESSADO POR QUALQUER CLASSE DE UMA APLICAÇÃO. É UM TERMO USADO PARA DAR VISIBILIDADE AOS MÉTODOS E ATRIBUTOS DE UMA CLASSE. visibilidadesvisibilidades PublicPublic PrivatePrivate protectedprotected A LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM OA LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM O MESMO NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOSMESMO NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOS DIFERENTES OU QUANTIDADE DIFERENTE DE PARÂMETROSDIFERENTES OU QUANTIDADE DIFERENTE DE PARÂMETROS A LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM OA LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM O MESMO NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOSMESMO NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOS DIFERENTES OU QUANTIDADE DIFERENTE DE PARÂMETROSDIFERENTES OU QUANTIDADE DIFERENTE DE PARÂMETROS POOPOO -- FUNDAMENTOSFUNDAMENTOS INSTANCIANDO OBJETOSINSTANCIANDO OBJETOS –– Complementos (Complementos (contcont)) public INDICA QUE O MÉTODO PODE SER ACESSADO POR QUALQUER CLASSE DE UMA APLICAÇÃO. É UM TERMO USADO PARA DAR VISIBILIDADE AOS MÉTODOS E ATRIBUTOS DE UMA CLASSE.DenominaDenomina--se dese de SOBRECARGA DE MÉTODOSSOBRECARGA DE MÉTODOS quando se tem mais de umquando se tem mais de um método com o mesmométodo com o mesmo nome em uma classenome em uma classe DenominaDenomina--se dese de SOBRECARGA DE MÉTODOSSOBRECARGA DE MÉTODOS quando se tem mais de umquando se tem mais de um método com o mesmométodo com o mesmo nome em uma classenome em uma classe visibilidadesvisibilidades PublicPublic PrivatePrivate protectedprotected A LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM OA LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM O MESMO NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOSMESMO NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOS DIFERENTES, OU QUANTIDADE DIFERENTE DE PARÂMETROS OUDIFERENTES, OU QUANTIDADE DIFERENTE DE PARÂMETROS OU DIFERENTES POSIÇÕES DOS TIPOSDIFERENTES POSIÇÕES DOS TIPOS A LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM OA LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM O MESMO NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOSMESMO NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOS DIFERENTES, OU QUANTIDADE DIFERENTE DE PARÂMETROS OUDIFERENTES, OU QUANTIDADE DIFERENTE DE PARÂMETROS OU DIFERENTES POSIÇÕES DOS TIPOSDIFERENTES POSIÇÕES DOS TIPOS DenominaDenomina--se dese de SOBRECARGA DE MÉTODOSSOBRECARGA DE MÉTODOS quando se tem mais de umquando se tem mais de ummétodo com o mesmométodo com o mesmo nome em uma classenome em uma classe DenominaDenomina--se dese de SOBRECARGA DE MÉTODOSSOBRECARGA DE MÉTODOS quando se tem mais de umquando se tem mais de um método com o mesmométodo com o mesmo nome em uma classenome em uma classe POOPOO -- FUNDAMENTOSFUNDAMENTOS INSTANCIANDO OBJETOSINSTANCIANDO OBJETOS –– Complementos (Complementos (contcont)) Carro objCarroX = new Carro(1500);Carro objCarroX = new Carro(1500); Carro objCarroY = new Carro(1600,”GM”);Carro objCarroY = new Carro(1600,”GM”); EXEMPLO DEEXEMPLO DE INSTÂNCIASINSTÂNCIAS EXEMPLO DEEXEMPLO DE INSTÂNCIASINSTÂNCIAS EXEMPLO DEEXEMPLO DE INSTÂNCIASINSTÂNCIAS EXEMPLO DEEXEMPLO DE INSTÂNCIASINSTÂNCIAS EXEMPLO EMEXEMPLO EM UMUM PROGRAMAPROGRAMA EXEMPLO EMEXEMPLO EM UMUM PROGRAMAPROGRAMA POOPOO -- FUNDAMENTOSFUNDAMENTOS Exercício de FixaçãoExercício de Fixação ElaboreElabore umum programaprograma JavaJava queque permitapermita criarcriar quatroquatro objetosobjetos dada classeclasse Carro,Carro, sendosendo queque cadacada umum devedeve serser criadocriado comcom umum construtorconstrutor distinto,distinto, sendosendo queque umum dessesdesses métodosmétodos devedeve possuirpossuir oo seuseu corpocorpo vaziovazio.. EscreverEscrever cadacada umum dosdos atributosatributos dede cadacada umum dessesdesses quatroquatro objetosobjetos.. ElaboreElabore umum programaprograma JavaJava queque permitapermita criarcriar quatroquatro objetosobjetos dada classeclasse Carro,Carro, sendosendo queque cadacada umum devedeve serser criadocriado comcom umum construtorconstrutor distinto,distinto, sendosendo queque umum dessesdesses métodosmétodos devedeve possuirpossuir oo seuseu corpocorpo vaziovazio.. EscreverEscrever cadacada umum dosdos atributosatributos dede cadacada umum dessesdesses quatroquatro objetosobjetos.. F I MF I MF I MF I M
Compartilhar