Programación con java: mantener las cosas simples en su aplicación para android

La clave para tener éxito con la programación Java es que sea sencillo. La mayoría de los programas funcionan de forma totalmente en el mundo virtual. No tienen ladrillos, clavos o vigas. Puede escribir un programa bastante complicado en cuestión de minutos. Incluso sin el músculo y sin un equipo pesado, puede crear una estructura cuya complejidad rivaliza con la de muchas estructuras físicas complicadas. Usted, el desarrollador, tiene el poder de construir puentes, intrincados virtuales.

Uno de los objetivos de la programación es la gestión de la complejidad. Una buena aplicación no es simplemente útil o atractivo a la vista - el código de una buena aplicación está muy bien organizado, fácil de entender y fácil de modificar.

Ciertos lenguajes de programación, como C ++, soportan herencia múltiple, en el que una clase puede tener más de una clase padre. Por ejemplo, en C ++ se puede crear una Libro clase a Material de enseñanza clase, y una Libro de texto clase. Puedes hacer Libro de texto extender tanto Libro y Material de enseñanza. Esta característica hace que las jerarquías de clase bastante flexible, pero también hace que esas mismas jerarquías extremadamente complicado. Se necesitan reglas complicadas para decidir cómo heredar los métodos de movimiento tanto en el equipo de Ratón clase y los de roedores Ratón clase.

Para evitar toda esta complejidad, Java no soporta herencia múltiple. En Java, cada clase tiene una (y sólo una) superclase. Una clase puede tener cualquier número de subclases. Usted puede (y será) crear muchas subclases de Android AppCompatActivity clase. Y otros desarrolladores crear sus propias subclases de Android AppCompatActivity clase. Pero las clases no tienen múltiples personalidades. Una clase de Java puede tener sólo uno de los padres. los Ejecutivo clase no se puede extender tanto el Empleado a tiempo completo clase y la Empleado a tiempo parcial clase.

La relación entre una clase y sus subclases es uno de herencia. En muchas familias de la vida real, un niño hereda activos de un padre. Esa es la forma en que funciona.

Pero tenga en cuenta la relación entre un editor y un autor. El editor dice, “la firma de este contrato, se compromete a presentar un manuscrito completo para el día quince de agosto.” A pesar de las excusas que el autor da antes de la fecha límite, la relación entre el editor y el autor es uno de obligación. El autor se compromete a asumir cierta responsabilidades- y, con el fin de seguir siendo un autor, el autor debe cumplir con esas responsabilidades. (Por cierto, no hay subtexto en este párrafo - ninguno en absoluto.)

Consideremos ahora Barry Burd. ¿Quien? Barry Burd - el tipo que escribe de programación Java para desarrolladores de Android para Dummies, segunda edición, y algunos otros libros Para Dummies (todos de Wiley Publishing). Él es un profesor de la universidad, y también es un autor. Que desea reflejar esta situación en un programa Java, pero Java no soporta herencia múltiple. No se puede hacer Barry extender tanto una Profesor clase y una Autor clase al mismo tiempo.

Afortunadamente para Barry, Java tiene interfaces. Una clase sólo puede ampliar una clase padre, sino una clase puede implementar muchas interfaces. Una clase padre es un montón de cosas que hereda una clase. Por otra parte, al igual que con la relación entre un editor y un autor, una interfaz es un montón de cosas que una clase está obligado a proporcionar.

He aquí otro ejemplo. Aunque una empresa puede contratar a consultores, asesores que trabajan para la empresa no son empleados. Los consultores son normalmente autónomos. Muestran de manera temporal para ayudar a las empresas a resolver los problemas y luego dejan a las empresas a trabajar en otro lugar. En los Estados Unidos, diferenciando entre un empleado y un consultor es importante: Tan graves son las leyes de retención de impuestos de Estados Unidos que el etiquetado de un consultor de un “empleado” de cualquier tipo sería someter a la Compañía a un considerable riesgo legal.

Para incluir consultores con los empleados en el código, que necesita una clase Consultor que está separado de su actual Empleado jerarquía de clases. Por otra parte, los consultores tienen mucho en común con los empleados regulares de una empresa. Por ejemplo, cada consultor tiene una getPayString método. Que desea representar esta comunidad en su código, por lo que se crea una interfaz. La interfaz obliga a una clase para dar significado al nombre del método getPayString.
paquete com.allyourcode.company-

interfaz pública pagar {

Cadena getPayString pública () -
}
El elemento en el código anterior no es una clase - es una interfaz Java. Esto es lo que dice el código del anuncio:
Como una interfaz, el getPayString método tiene una cabecera, pero ningún cuerpo. En esta interfaz, la getPayString método no toma argumentos y devuelve un valor de tipo Cuerda. Una clase que pretende implementar el Pagadero interfaz debe proporcionar (directa o indirectamente) un cuerpo para el getPayString método. Es decir, una clase que pretende poner en práctica Pagadero debe, de una manera u otra, poner en práctica el getPayString método.

Las siguientes dos secciones de código implementan el Pagadero interfaz y proporcionar cuerpos para la getPayString método.
com.allyourcode.company- paquete

importación java.text.NumberFormat-
importación java.util.Locale-

Consultor clase pública implementa pagar {

Nombre cadena
doble hourlyFee-
int hoursWorked-

moneda NumberFormat estática = NumberFormat.getCurrencyInstance (Locale.US) -

Consultor pública () {
}

Consultor pública (String nombre, doble hourlyFee, int hoursWorked) {
this.name = Nombre
this.hourlyFee = hourlyFee-
this.hoursWorked = hoursWorked-
}

pagar el doble pública () {
volver hourlyFee * hoursWorked-
}

@Anular
Cadena getPayString pública () {
Nombre regresar + ", " + Currency.format (de pago ()) + "norte"-
}
}
Echa un vistazo a este código: Otra clase implementa la interfaz
com.allyourcode.company paquete;

Empleado clase pública implementa pagar {
Nombre cadena
cadena jobTitle-
int vacationDays-
doble taxWithheld-

empleado público() {
}

Empleado público (String nombre, cadena jobTitle) {
this.name = Nombre
this.jobTitle = jobTitle-
}

@Anular
Cadena getPayString pública () {
Nombre regresar + ", Pay no se conoce n"-
}
}
Ambos Consultor y Empleado clases implementan la Pagadero interfaz - la interfaz que resume lo que significa ser pagado por la empresa. Con esto en mente, considere este código:
com.allyourcode.a10_10- paquete

importación android.support.v7.app.AppCompatActivity-
importación android.os.Bundle-
importación android.widget.TextView-

importación com.allyourcode.company.Consultant-
importación com.allyourcode.company.Employee-
importación com.allyourcode.company.Payable-

MainActivity clase pública se extiende AppCompatActivity {
Vista de Texto textView-

@Anular
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState) -
setContentView (R.layout.activity_main) -

Textview = (TextView) findViewById (R.id.textView) -

empleado Empleado = new Empleado ("Barry", "Autor") -
consultor consultor = nuevo Consultor ("Colita", 100.00, 30) -

textView.setText ("") -

displayPay (empleado) -
displayPay (consultor) -
}

displayPay vacío (A pagar por pagar) {
textView.append (payable.getPayString ()) -
}
}

java-programación-para-android-developers-2e-empleado
Pagar a un empleado y un consultor.

los displayPay método no sabe nada acerca de Empleado o clases Consultor clases. Todos displayPay Método sabe es que quiere que su parámetro para implementar el Pagadero interfaz. Siempre y cuando el objeto se pasa a displayPay implementa el Pagadero interfaz, el displayPay El cuerpo de método puede llamar de forma segura el getPayString método.

Ambos Empleado y Consultor clases implementan la Pagadero interfaz. Por lo tanto, se puede pasar un Empleado oponerse a la displayPay método, y pasar una Consultor oponerse a la displayPay método. Esa flexibilidad - la capacidad de pasar más de un tipo de objeto a un método - ilustra el poder de las interfaces de Java.

Dos clases no relacionadas (Empleado y Consultor) Tanto poner en práctica el Pagadero interfaz.

java-programación-para-android-developers-2e-interfaz
Una interfaz corta a través de la jerarquía de clases.

La línea de puntos no es parte de la norma UML. Las personas que manejan el estándar tienen mucho mejores maneras de representar las interfaces.

Artículos Relacionados