{"id":6188,"date":"2017-05-11T09:00:59","date_gmt":"2017-05-11T12:00:59","guid":{"rendered":"https:\/\/www.mxcursos.com\/blog\/?p=6188"},"modified":"2019-03-16T20:35:29","modified_gmt":"2019-03-16T23:35:29","slug":"orientacao-objetos-com-cplusplus","status":"publish","type":"post","link":"https:\/\/www.mxcursos.com\/blog\/orientacao-objetos-com-cplusplus\/","title":{"rendered":"Orienta\u00e7\u00e3o a Objetos com C++"},"content":{"rendered":"<p style=\"text-align: justify\">Ol\u00e1, tudo bem? Nesse post irei falar sobre programa\u00e7\u00e3o orientada a objetos (POO) utilizando a linguagem de programa\u00e7\u00e3o C++. J\u00e1 pensou se o seu chefe pede para voc\u00ea fazer um programa que armazene diferentes tipos de dados tais como nome, CPF, idade e peso de uma pessoa? Gra\u00e7as ao C++ voc\u00ea pode tirar de letra essa miss\u00e3o, pois ele oferece uma estrutura chamada class (classe) para lidar com este tipo de processo.<\/p>\n<p style=\"text-align: justify\">Esse artigo pode ser um tanto complicado pra iniciantes em C++, mas n\u00e3o se preocupe, eu elaborei um curso no MX Cursos especialmente para iniciantes: <a href=\"https:\/\/www.mxcursos.com\/c-para-iniciantes\" target=\"_blank\" rel=\"noopener noreferrer\">clique aqui<\/a> para acessar.<\/p>\n<h2 style=\"text-align: justify\">Programando com classe<\/h2>\n<p style=\"text-align: justify\">\u00c9 verdade que voc\u00ea pode armazenar os dados em arrays paralelos, ou seja, voc\u00ea teria um array para armazenar os nomes das pessoas, outro para armazenar as idades e assim sucessivamente. Os arrays s\u00e3o muito bons para valores individuais, mas n\u00e3o s\u00e3o t\u00e3o bons quando os dados v\u00eam em grupos de informa\u00e7\u00f5es.<\/p>\n<p style=\"text-align: justify\">\u00a0Grupos de informa\u00e7\u00f5es? Como assim?<\/p>\n<p style=\"text-align: justify\">Simples, por exemplo: o nosso programa tem que armazenar e manipular os dados de pessoas n\u00e3o \u00e9 mesmo? Esses dados fazem sentido quando eles est\u00e3o agregados, ou seja, o Marcos tem o nome, idade e peso dele; a Maria tem o nome, idade e peso dela e assim sucessivamente.<\/p>\n<p style=\"text-align: justify\">Portanto, utilizar arrays paralelos nesse caso pode gerar uma grande confus\u00e3o!<\/p>\n<h2 style=\"text-align: justify\">Defini\u00e7\u00e3o de classe<\/h2>\n<p style=\"text-align: justify\">E como definir uma classe em C++? Basta utilizar a palavra-chave <em>class\u00a0<\/em>seguida do nome da classe.\u00a0Veja o exemplo de uma defini\u00e7\u00e3o de uma classe Pessoa com os atributos nome, idade e peso:<\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-6197\" src=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe.png\" alt=\"\" width=\"217\" height=\"163\" srcset=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe.png 217w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe-80x60.png 80w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe-24x18.png 24w\" sizes=\"(max-width: 217px) 100vw, 217px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">F\u00e1cil, n\u00e3o \u00e9 mesmo? Por enquanto n\u00e3o vou falar do <em>private<\/em>. Voc\u00ea tamb\u00e9m poderia utilizar o nome <em>struct\u00a0<\/em>no lugar de <em>class<\/em>, mas o <em>class\u00a0<\/em>\u00e9 mais utilizado quando estamos programando em C++. O nome, idade e peso s\u00e3o conhecidos como membros da classe.<\/p>\n<p style=\"text-align: justify\">O que n\u00f3s fizemos foi definir uma classe para representar uma pessoa. Uma pessoa tem um nome, idade e peso n\u00e3o \u00e9 mesmo? Poderia ter mais atributos como CPF, RG, cor dos olhos etc.<\/p>\n<h2 style=\"text-align: justify\">Objeto<\/h2>\n<p style=\"text-align: justify\">J\u00e1 declaramos a nossa classe e vimos como \u00e9 f\u00e1cil fazer isso. Declarar uma classe em C++ \u00e9 como definir um novo tipo de vari\u00e1vel. Agora que j\u00e1 definimos uma classe, podemos criar uma inst\u00e2ncia de uma classe, veja como \u00e9 f\u00e1cil fazer isso:<\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe2.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-6201\" src=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe2.png\" alt=\"\" width=\"351\" height=\"112\" srcset=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe2.png 351w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe2-350x112.png 350w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe2-24x8.png 24w\" sizes=\"(max-width: 351px) 100vw, 351px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Pronto, j\u00e1 temos o nosso objeto &#8220;p&#8221;. Uma inst\u00e2ncia de uma classe \u00e9 chamada de <em>object<\/em> (objeto). Programadores iniciantes muitas vezes confundem o conceito de classe e objeto, mas \u00e9 simples: digamos que Cachorro \u00e9 uma classe e o meu cachorro chamado Yankee \u00e9 um exemplo de um cachorro. Minha cadela Lilica \u00e9 um exemplo de outro cachorro. O Yankee e a Lilica s\u00e3o objetos, ou seja, inst\u00e2ncias de Cachorro.<\/p>\n<p style=\"text-align: justify\">Legal, mas vamos parar um pouquinho de falar de cachorro porque a classe que definimos representa uma pessoa n\u00e3o \u00e9 mesmo? Quando definimos eu falei que n\u00e3o ir\u00edamos falar do <em>private<\/em>, mas falaremos agora:\u00a0<em>private\u00a0<\/em>\u00e9 um modificador de acesso. Os membros declarados como\u00a0<em>private\u00a0<\/em><strong>n\u00e3o<\/strong> podem ser acessados de fora da classe em que foram definidos. Isso quer dizer que o c\u00f3digo abaixo n\u00e3o compila:<\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe3.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-6205\" src=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe3.png\" alt=\"\" width=\"354\" height=\"134\" srcset=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe3.png 354w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe3-24x9.png 24w\" sizes=\"(max-width: 354px) 100vw, 354px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Voc\u00ea vai obter um erro de compila\u00e7\u00e3o indicando que &#8220;idade&#8221; \u00e9\u00a0<em>private\u00a0<\/em>(privado). Perceba que eu estou tentando acessar um membro privado de fora da classe em que ele foi definido. O que fazer ent\u00e3o? Basta definir um m\u00e9todo p\u00fablico para setar a idade bem como um m\u00e9todo p\u00fablico para obter essa idade para exibirmos ela na nossa fun\u00e7\u00e3o\u00a0<em>main<\/em>.<\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe4.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-6206\" src=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe4.png\" alt=\"\" width=\"311\" height=\"374\" srcset=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe4.png 311w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe4-20x24.png 20w\" sizes=\"(max-width: 311px) 100vw, 311px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Perceba que utilizei o modificador\u00a0<em>public\u00a0<\/em>nos m\u00e9todos. Um m\u00e9todo nada mais \u00e9 que uma fun\u00e7\u00e3o definida em uma classe. Agora vamos voltar para a nossa fun\u00e7\u00e3o\u00a0<em>main\u00a0<\/em>para setar e imprimir a idade da pessoa.<\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe5.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-6207\" src=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe5.png\" alt=\"\" width=\"511\" height=\"177\" srcset=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe5.png 511w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2017\/05\/classe5-24x8.png 24w\" sizes=\"(max-width: 511px) 100vw, 511px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Utilizei os m\u00e9todos p\u00fablicos para poder acessar os atributos privados da classe Pessoa. Lembre-se: membros privados n\u00e3o podem ser acessados de fora da classe onde foram definidos.<\/p>\n<p style=\"text-align: justify\">Por esse post \u00e9 s\u00f3, em breve irei fazer mais posts sobre orienta\u00e7\u00e3o a objetos com C++, abra\u00e7o!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1, tudo bem? Nesse post irei falar sobre programa\u00e7\u00e3o orientada a objetos (POO) utilizando a linguagem de programa\u00e7\u00e3o C++. J\u00e1 pensou se o seu chefe pede para voc\u00ea fazer um programa que armazene diferentes tipos de dados tais como nome, CPF, idade e peso de uma pessoa? Gra\u00e7as ao C++ voc\u00ea pode tirar de letra [&hellip;]<\/p>\n","protected":false},"author":67,"featured_media":6234,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1178],"tags":[],"class_list":["post-6188","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacao"],"_links":{"self":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/6188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/comments?post=6188"}],"version-history":[{"count":0,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/6188\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media\/6234"}],"wp:attachment":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media?parent=6188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/categories?post=6188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/tags?post=6188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}