post icon

Programación Orientada a Objetos: Setter y Getter

Siguiendo con la segunda entrega del tutorial de OOP, continuaremos con los conceptos de Setters y Getters.

Es aquí donde empieza a entrar en juego uno de los pilares del paradigma OOP, el encapsulamiento. No es exclusivamente set y get los que definen dicho pilar pero ellos implementan y permiten que suceda (también entran los métodos)

Que significa encapsular? En poder definir el alcance, visibilidad de cualquier atributo o método de una clase, esto nos otorga un par de beneficios, como que nadie asigne valores por equivocación o sobrescriban funcionalidades cuando no deben. También permite la programación que se llama “Caja Negra“, al tener atributos y métodos privados un programador que usará esa clase, no necesitará conocer como lo hace, sino sólamente que hace.

Es buena práctica crear los atributos con el modificador private mientras que los setter y getter con public aunque ésto no es la ley tampoco, puede existir algún caso que necesite romper esta recomendación. De ésta manera las variables atributos podrán ser accedidas y modificadas no directamente sino a través de los set y get.

Siguiente con el ejemplo que veiamos en la  primer parte del tutorial, agregaremos éste nuevo concepto al código ya existente. Verán que al final se ejecutará lo mismo pero esta vez ya utilizando los Setter y Getter, además que desde otras clases externas no podrán más modificar ni acceder a los atributos de la clase, obligatoriamente deberán pasar por el Set y Get.

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package devtroce;
 
public class Persona {
 
    /**
     * @author GeekZero@DevTroce.com
     */
    // lista de atributos que la definen
    private String Nombre;
    private String Apellido;
    private String Documento;
    private int Peso;
    private String Ojos;
    private char Sexo;
 
    public String getApellido() {
        return Apellido;
    }
 
    public void setApellido(String Apellido) {
        this.Apellido = Apellido;
    }
 
    public String getDocumento() {
        return Documento;
    }
 
    public void setDocumento(String Documento) {
        this.Documento = Documento;
    }
 
    public String getNombre() {
        return Nombre;
    }
 
    public void setNombre(String Nombre) {
        this.Nombre = Nombre;
    }
 
    public String getOjos() {
        return Ojos;
    }
 
    public void setOjos(String Ojos) {
        this.Ojos = Ojos;
    }
 
    public int getPeso() {
        return Peso;
    }
 
    public void setPeso(int Peso) {
        this.Peso = Peso;
    }
 
    public char getSexo() {
        return Sexo;
    }
 
    public void setSexo(char Sexo) {
        this.Sexo = Sexo;
    }
 
    // metodo para poder ejecutar la clase en Java (irrelevante para el conceto estudiado)
    public static void main(String[] args) {
        // instancia de la clase persona
        // el nombre del objeto debe ser distinto que el nombre de su clase,
        // puede tener cualquiera que querramos
        Persona persona = new Persona();
 
        // asignación de valores al objeto
        persona.setNombre("Linus");
        persona.setApellido("Torvals");
        persona.setDocumento("777");
        persona.setPeso(80);
        persona.setOjos("Azul");
        persona.setSexo('M');
 
        // instancia de la clase persona
        Persona otraPersona = new Persona();
 
        // asignación de valores al objeto
        otraPersona.setNombre("Winona");
        otraPersona.setApellido("Raider");
        otraPersona.setDocumento("666");
        otraPersona.setPeso(65);
        otraPersona.setOjos("Marrones");
        otraPersona.setSexo('F');
 
        // listado
        System.out.println("La primer persona es: " + persona.getNombre() + " " + persona.getApellido());
        System.out.println("La segunda persona es: " + otraPersona.getNombre() + " " + otraPersona.getApellido());
    }
}

Visual Basic .Net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
' @author GeekZero@DevTroce.com
 
Public Class Persona
 
    ' lista de atributos que la definen
    Private _Nombre As String
    Private _Apellido As String
    Private _Documento As String
    Private _Peso As Integer
    Private _Ojos As String
    Private _Sexo As Char
 
    Public Property Nombre() As String
        Get
            Return _Nombre
        End Get
        Set(ByVal value As String)
            _Nombre = value
        End Set
    End Property
 
    Public Property Apellido() As String
        Get
            Return _Apellido
        End Get
        Set(ByVal value As String)
            _Apellido = value
        End Set
    End Property
    Public Property Documento() As String
        Get
            Return _Documento
        End Get
        Set(ByVal value As String)
            _Documento = value
        End Set
    End Property
    Public Property Peso() As String
        Get
            Return _Peso
        End Get
        Set(ByVal value As String)
            _Peso = value
        End Set
    End Property
    Public Property Ojos() As String
        Get
            Return _Ojos
        End Get
        Set(ByVal value As String)
            _Ojos = value
        End Set
    End Property
    Public Property Sexo() As String
        Get
            Return _Sexo
        End Get
        Set(ByVal value As String)
            _Sexo = value
        End Set
    End Property
 
    Public Sub Mostrar()
        ' instancia de la clase persona
        ' el nombre del objeto debe ser distinto que el nombre de su clase,
        ' puede tener cualquiera que querramos
        Dim persona As Persona = New Persona
 
        ' asignación de valores al objeto
        persona.Nombre = "Linus"
        persona.Apellido = "Torvals"
        persona.Documento = "777"
        persona.Peso = 80
        persona.Ojos = "Azul"
        persona.Sexo = "M"
 
        ' instancia de la clase persona
        Dim otraPersona As Persona = New Persona
 
        ' asignación de valores al objeto
        otraPersona.Nombre = "Winona"
        otraPersona.Apellido = "Raider"
        otraPersona.Documento = "666"
        otraPersona.Peso = 65
        otraPersona.Ojos = "Marrones"
        otraPersona.Sexo = "F"
 
        ' listado
        Debug.WriteLine("La primer persona es: " + persona.Nombre + " " + persona.Apellido)
        Debug.WriteLine("La segunda persona es: " + otraPersona.Nombre + " " + otraPersona.Apellido)
    End Sub
 
End Class

En la tercer entrega veremos ya el uso y significado de los métodos de una clase. Para que sirven y cómo se usan.

Comentarios desde Facebook:

  1. avatar
    Irene NETHERLANDS Mozilla Firefox Windows
    13 septiembre 2011 at 04:50 #

    Muchas gracias!

  2. avatar
    Yuan_007 PARAGUAY Mozilla Firefox Windows
    9 septiembre 2011 at 04:37 #

    Gracias!!! 🙂

Trackbacks/Pingbacks

  1. Programación Orientada a Objetos: Constructores y Sobrecarga | DevTroce.com WordPress - 28 octubre 2010

    […] última entrega sobre POO fue ya unos meses atrás y hablábamos de los Setters y Getters, hoy tocaremos un tema sencillo también que son los Constructores de Clases. Ya que tocamos el […]

Responder