elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Por qué se declaran atributos de tipo private y no de tipo public
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Por qué se declaran atributos de tipo private y no de tipo public  (Leído 2,679 veces)
LoQueSeaPI

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Por qué se declaran atributos de tipo private y no de tipo public
« en: 20 Diciembre 2016, 18:26 pm »

Hola a todos! Estoy aprendiendo java por mi propia cuenta durante las vacaciones.  ;-) Pero en este camino de aprendizaje me tope con los atributos de tipo private(dentro de otras clases que no son el main), y me gustaría saber porque se declaran de esta manera, y no de forma publica. Yo he llegado a la conclusión de que puede ser por seguir el paradigma, segmentar el programa, en métodos, pero no se si es por eso.  :-[


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Por qué se declaran atributos de tipo private y no de tipo public
« Respuesta #1 en: 20 Diciembre 2016, 18:55 pm »

Uno de los principios de la programacion orientada objeto se llama encasulamiento que tiene que ver con tu duda.

El concepto de encapsulación

La encapsulación es un mecanismo que consiste en organizar datos y métodos de una estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso a datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulación garantiza la integridad de los datos que contiene un objeto.


En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
miltonprogramador

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: Por qué se declaran atributos de tipo private y no de tipo public
« Respuesta #2 en: 21 Diciembre 2016, 14:20 pm »

hola... es una respuesta muy concreta la que te brinda yoya... todas los atributos por defecto son de tipo publica, por lo que se puede llegar a ellos desde cualquier programa para obtener o alterar su valor. Colocas privada para asegurarte que sea su misma clase a través de sus métodos la que tenga acceso a esa variable. Por ejemplo: si haces una clase llamada combustible para un que será instanciada en una clase llamada carro, la clase combustible tendrá una propiedad llamada nivelDeCombustible, bueno a esa clase la colocas privada para que solo puedas modificarla desde la instancia creada utilizando los métodos get y set en la clase cumbustible... espero no haberte confundido más jejeje...
En línea

Aprendiendo de los mejores se llega a ser uno de ellos...
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Por qué se declaran atributos de tipo private y no de tipo public
« Respuesta #3 en: 21 Diciembre 2016, 14:33 pm »

Citar
por lo que se puede llegar a ellos desde cualquier programa

no desde cualquier programa... será desde cualquier clase o sección del codigo... los otros programas no pueden acceder a tu programa así como así
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
4dr14n31t0r

Desconectado Desconectado

Mensajes: 85



Ver Perfil
Re: Por qué se declaran atributos de tipo private y no de tipo public
« Respuesta #4 en: 22 Diciembre 2016, 19:45 pm »

todas los atributos por defecto son de tipo publica, por lo que se puede llegar a ellos desde cualquier programa para obtener o alterar su valor.
Te equivocas, por defecto son de tipo "package", que significa que ese atributo (o metodos, si estos tampoco se declaran con public o private o protected) puede ser accedido desde cualquier clase que este dentro del mismo paquete. Una cosa curiosa del tipo de dato "package" es que la unica forma de declararlo como tal es omitiendo el tipo de acceso (public, private o protected, como ya he dicho). De modo que si no se escriben ninguna de estas 3 palabras solo entonces es package.
me gustaría saber porque se declaran de esta manera, y no de forma publica. Yo he llegado a la conclusión de que puede ser por seguir el paradigma, segmentar el programa, en métodos, pero no se si es por eso.  :-[
Lo normal no solo es declararlo de forma private los atributos sino ademas crear un metodo getAtributo() y setAtributo() para obtener el atributo y cambiar el valor del mismo.
Antes que nada tienes que entender que java es completamente POO, y la POO se hizo mas que nada para trabajar en equipo. Cada programador crea una clase de forma independiente y al final las combinan todas para formar el programa mas facilmente.
La idea mas que nada es la siguiente: Imaginate que en un proyecto ENORME se utiliza en muchiiisimos sitios un atributo de una clase. Ahora imaginate que, por alguna razon, cada vez que se accede a dicho atributo necesitas ejecutar una funcion o cambiar algunos datos de la misma clase. Si el atributo fuera publico esto seria un problemón, ya que tienes que adaptar el codigo de 300 clases en donde quiera que sea que se haya utilizado ese atributo para cada vez que lo haga hacer lo que sea que se tenga que hacer. Bueno pues si en vez de eso hicieras el atributo privado e hicieras los metodos getter y setter (asi es como se le llaman a los metodos setAtributo y getAtributo) entonces solamente tendrias que modificar el metodo getter y voilá, ya está hecho.
También es util para control de errores: supongamos que tienes un atributo de tipo int al que solo te interesa que se le de un valor entre 5 y 20. Entonces dentro del setter tendrias que mostrar un mensaje de error y terminar el programa si el valor que se le pasa por parametro no cumple la condicion de que esté entre 5 y 20. (No se si habrás visto el control de errores con el bloque try catch y los throw que sirven para controlar cuando se produce un error como meter un valor que no este entre 5 y 20 en este caso, pero lo suyo seria utilizar throw)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Redes inhambricas tipo OPN - tipo abierto sin contraseña
Hacking Wireless
a3lf 7 18,493 Último mensaje 29 Septiembre 2010, 00:11 am
por a3lf
Pasar tipo byte a tipo word sin uso de movs?
ASM
Morringos 3 5,258 Último mensaje 1 Abril 2011, 11:44 am
por Eternal Idol
[C++] Conversión tipo predefinido <-> tipo definido por usuario
Programación C/C++
dopin 2 2,561 Último mensaje 22 Agosto 2012, 15:04 pm
por dopin
Tipo de AVI
Multimedia
halseq 7 5,193 Último mensaje 16 Julio 2014, 04:25 am
por halseq
¿Qué tipo de proyecto tipo bricolage harías?
Electrónica
Meta 6 4,790 Último mensaje 2 Diciembre 2015, 11:39 am
por kondrag_X1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines