{"id":198,"date":"2023-06-03T00:28:13","date_gmt":"2023-06-03T00:28:13","guid":{"rendered":"https:\/\/canessaalvamiguel.dev\/?p=198"},"modified":"2023-06-03T00:28:13","modified_gmt":"2023-06-03T00:28:13","slug":"classes-in-scala","status":"publish","type":"post","link":"https:\/\/canessaalvamiguel.dev\/index.php\/2023\/06\/03\/classes-in-scala\/","title":{"rendered":"Classes in Scala"},"content":{"rendered":"\n<p>En el mundo de la programaci\u00f3n orientada a objetos, Scala ofrece un s\u00f3lido soporte para la creaci\u00f3n de clases, que son la piedra angular de la construcci\u00f3n de estructuras de software robustas y reutilizables. Las clases en Scala nos permiten definir objetos con atributos y comportamientos, lo que facilita la organizaci\u00f3n del c\u00f3digo y la creaci\u00f3n de abstracciones.<\/p>\n\n\n\n<p>En Scala, una clase se define utilizando la palabra clave <code>class<\/code> seguida del nombre de la clase y un conjunto de par\u00e1metros opcionales. Veamos un ejemplo b\u00e1sico de c\u00f3mo se ve la definici\u00f3n de una clase en Scala:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nclass Persona(nombre: String, edad: Int) {\n  \/\/ Cuerpo de la clase\n}\n<\/pre><\/div>\n\n\n<p>En este ejemplo, hemos definido una clase llamada <code>Persona<\/code> con dos par\u00e1metros: <code>nombre<\/code> de tipo <code>String<\/code> y <code>edad<\/code> de tipo <code>Int<\/code>. El cuerpo de la clase, que se encuentra dentro de las llaves <code>{}<\/code>, contendr\u00e1 los atributos, m\u00e9todos y dem\u00e1s miembros de la clase.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Atributos de clase:<\/h2>\n\n\n\n<p>Los atributos de una clase en Scala se definen utilizando la palabra clave <code>val<\/code> o <code>var<\/code>, seguida del nombre del atributo y su tipo. La diferencia entre <code>val<\/code> y <code>var<\/code> radica en la mutabilidad del atributo. Un atributo definido con <code>val<\/code> es inmutable (es decir, su valor no puede cambiar una vez asignado), mientras que un atributo definido con <code>var<\/code> es mutable (puede cambiar su valor).<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nclass Persona(nombre: String, edad: Int) {\n  val nombreCompleto: String = nombre \/\/ atributo inmutable\n  var edadActual: Int = edad \/\/ atributo mutable\n}\n<\/pre><\/div>\n\n\n<p>En este ejemplo, hemos definido dos atributos en la clase <code>Persona<\/code>: <code>nombreCompleto<\/code> como un atributo inmutable que toma el valor del par\u00e1metro <code>nombre<\/code>, y <code>edadActual<\/code> como un atributo mutable que toma el valor del par\u00e1metro <code>edad<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e9todos de clase:<\/h2>\n\n\n\n<p>Los m\u00e9todos son funciones definidas dentro de una clase y proporcionan el comportamiento de la clase. Pueden acceder y manipular los atributos de la clase, as\u00ed como realizar otras operaciones. Veamos un ejemplo de c\u00f3mo definir un m\u00e9todo en una clase:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nclass Persona(nombre: String, edad: Int) {\n  def saludar(): Unit = {\n    println(s&quot;Hola, mi nombre es $nombre y tengo $edad a\u00f1os.&quot;)\n  }\n}\n<\/pre><\/div>\n\n\n<p>En este ejemplo, hemos definido un m\u00e9todo llamado <code>saludar<\/code> que imprime un mensaje utilizando los valores de los atributos <code>nombre<\/code> y <code>edad<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n de instancias de clase:<\/h2>\n\n\n\n<p>Una vez definida una clase, podemos crear instancias u objetos de esa clase utilizando el operador <code>new<\/code>. Veamos un ejemplo de c\u00f3mo crear una instancia de la clase <code>Persona<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nval persona1 = new Persona(&quot;Miguel&quot;, 30)\n<\/pre><\/div>\n\n\n<p>En este ejemplo, hemos creado una instancia de la clase <code>Persona<\/code> llamada <code>persona1<\/code> con los valores &#8220;Juan&#8221; y 30 para los par\u00e1metros <code>nombre<\/code> y <code>edad<\/code>, respectivamente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el mundo de la programaci\u00f3n orientada a objetos, Scala ofrece un s\u00f3lido soporte para la creaci\u00f3n de<\/p>\n","protected":false},"author":1,"featured_media":62,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[38,8],"class_list":["post-198","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scala","tag-classes","tag-scala"],"_links":{"self":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/comments?post=198"}],"version-history":[{"count":2,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/198\/revisions"}],"predecessor-version":[{"id":200,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/198\/revisions\/200"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/media\/62"}],"wp:attachment":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/media?parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/categories?post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/tags?post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}