Prefacio: Actualmente, estoy escribiendo un libro para programadores expertos en Delphi sobre el tema de la creación de programas bien diseñados utilizando técnicas de programación orientada a objetos en Delphi.
Este libro aún está en proceso de redacción. Espero que todos puedan tener una comprensión preliminar del tema y el estilo del lenguaje de este libro. Al mismo tiempo, puedes expresar tus propias opiniones. Como autor, espero que este libro se convierta en un clásico entre los libros originales de Delphi en China. Puede que no lo logre, pero haré lo mejor que pueda.
Debido a las razones anteriores, es imposible para mí publicar el libro completo (jaja, entonces nadie lo comprará), por lo que no debería publicar capítulos posteriores aquí (tal vez haya algunos extractos).
Aquí, me gustaría agradecer a los amigos que me alentaron y brindaron opiniones (lo publiqué en el foro Delphi de csdn y recibí una amplia gama de respuestas, gracias a todos). También me gustaría agradecer a mi novia, Esan, quien siempre me ha apoyado e inspirado. Todo lo que puedo hacer es escribir bien y recompensar a todos. ¡Sé que todos (incluido yo) han estado esperando demasiado por un buen libro!
Capítulo 1 Recomprensión de Delphi
La simplicidad es lo más difícil de conseguir en el mundo: es el límite último de la experiencia y el objetivo último del genio. ——George Sand Ya eres un programador experto en Delphi y puedes utilizar Delphi para escribir rápidamente un programa hermoso y práctico; te encanta Delphi, ella se ha convertido en una parte indispensable de tu trabajo y estudio. Supongo que esto es cierto, entonces usted debe tener sus propias razones o razones para elegir Delphi como su primera herramienta de desarrollo. Al menos, cumplo con todos los supuestos anteriores. Ahora, lo que quiero compartir con ustedes son las razones y motivos por los que elegí Delphi, así como mi comprensión de Delphi. Puedes considerarme un fanático que apoya a Delphi, aunque eso me hará sentir que me ves demasiado superficialmente. No lo admito, pero no me importa. Porque realmente la amo. La versión de Delphi con la que entré en contacto por primera vez fue la 3.0. En ese momento, solo la usaba como una herramienta RAD como Visual Basic. Sin embargo, a medida que pasa el tiempo, Delphi 3, Delphi 4, Delphi 5, Delphi 6 y Kylix tienen una comprensión cada vez más profunda de Delphi. Es una herramienta con ricas connotaciones. Cuanto más la entiende la gente, más se obsesiona con ella y más se siente inseparable de ella, aunque sigue siendo sólo una herramienta. Pascal es un lenguaje que presta atención a la estética del programa; no hay duda de que el código Pascal es el código más hermoso; Delphi basado en Object Pascal (un lenguaje Pascal que admite la orientación a objetos) lleva esta belleza al extremo. Ahora, puede abrir Delphi, seleccionar el menú "Ayuda" - "Acerca de", cuando aparezca la ventana Acerca de, mantenga presionada la tecla Alt y escriba "equipo" secuencialmente al mismo tiempo. Sí, la lista de desarrolladores de Delphi. ¡Agradezcamosles por crear herramientas de desarrollo que se parecen más a obras de arte!
1.1 La teoría de las herramientas de desarrollo "orientada a las personas"
A menudo se pueden ver preguntas como esta en varios foros de programación: "¿VB todavía tiene futuro?"; "¿Será eliminado Delphi?"; "¿Será reemplazado por .NET?". estos Cuando se planteó la pregunta, nadie pudo dar una respuesta. Porque el futuro de una tecnología o de un producto no está enteramente determinado por la tecnología en sí, sino que también está relacionado con factores como la demanda del mercado y la dirección de desarrollo de la empresa productora. ¿Y lo que debería preocuparnos son las respuestas a estas preguntas? Creo que no. Sabemos que todo en el mundo está compuesto de átomos; los programas en constante cambio se componen en última instancia de tres estructuras: secuencia, bucle y rama; tanto el MFC de VC como el VCL de Delphi están construidos con tecnología orientada a objetos (independientemente del grado de objeto). -orientado). Cuando miras más allá de la apariencia superficial de las cosas, ¡lo que ves es la misma esencia o similar! Después de dominar la esencia, descubrirás que la manifestación de la apariencia es muy natural. Imagínese, cuando pueda eliminar MFC por completo como Hou Jie (el autor de "Introducción a MFC"), ¿seguirá preocupándose de que MFC sea reemplazado por un determinado marco? Desde esta perspectiva, para un programador profesional, el concepto de programación permanece sin cambios. Existe un cierto patrón en el proceso de descubrir, analizar y resolver problemas. Una vez que domine este patrón, diferentes lenguajes de programación y diferentes entornos de desarrollo tendrán algo en común para usted. Creo que C++ es algo que todo programador profesional debe dominar. Por supuesto, esto no significa simplemente aprender su sintaxis (incluso puede ignorar el aprendizaje de alguna sintaxis), sino aprender métodos de programación y diseño orientado a objetos a través de C++. Porque C++ es amplio y profundo, porque C++ es omnipotente. En C ++, puede aprender todo sobre la teoría orientada a objetos. Después de aprender, C ++ lo transformará. Porque las características controvertidas que existen en la teoría orientada a objetos (como la herencia múltiple) son compatibles con C++. Sólo después de dominarlo podrás tomar tu propia decisión (a favor o en contra). Después de dominar la teoría orientada a objetos, ya sea C++, Object Pascal, Java o incluso C#, sentirás sus similitudes. ¿Eso significa que no hay otras diferencias entre las herramientas de desarrollo (tal vez deberían llamarse entornos de desarrollo integrados, pero a continuación me referiré a ellas como herramientas de desarrollo según mi costumbre) excepto los lenguajes que admiten? Por supuesto que no. Las herramientas de desarrollo son herramientas que le ayudan a hacer realidad sus ideas, que son superestructuras construidas sobre ideas básicas. El grado en que una herramienta de desarrollo respalda el concepto que se desea implementar y el grado en que simplifica el proceso de implementación es la consideración de la herramienta de desarrollo. Las herramientas de desarrollo para los programadores son como armas para los soldados. Si las armas no están a mano, la mitad de ellas serán derrotadas antes de la batalla. Siempre me ha gustado el eslogan publicitario de los teléfonos móviles Nokia: ¡La tecnología está orientada a las personas! Sí, las "personas" son la base y la misión de las herramientas es ayudar a las personas a alcanzar sus objetivos de forma más rápida y sencilla. Por lo tanto, ¡las herramientas de desarrollo también deberían centrarse en las personas! Como programador y usuario más directo de las herramientas de desarrollo, espero que las herramientas de desarrollo que utilizo puedan ser realmente mis socios y asistentes. Pueden brindarme una sensación de libertad y permitirme navegar libremente por el mundo del código. ¡Y adáptate a mí en lugar de ponerme grilletes! Hoy en día, en la plataforma Windows existen muchas herramientas de desarrollo para elegir: Visual C++, Visual Basic, Delphi, C++ Builder, JBuilder... Se basan en diferentes lenguajes de programación y son fieles a los conceptos de producto de diferentes empresas. Desde esta perspectiva, la diferencia entre ellos es muy grande. Entonces, ¿qué tipo de herramientas de desarrollo son excelentes, consideradas y orientadas a las personas? Mis estándares son cumplir con los siguientes cuatro puntos: 1. Ser capaz de simplificar el problema a resolver e implementarlo rápidamente con un concepto determinado 2. No ocultar ningún detalle que desee saber 3. Puede ignorar los detalles que no desea saber 4. Tome la iniciativa de ¿Existen herramientas de desarrollo que cumplan con los cuatro puntos anteriores y que sean adecuadas para programadores de diferentes niveles? Mi respuesta es: ¡sí! ¡Eso es Delfos! Ella simplificó todo pero nunca me impidió buscar la verdad. Puede completar tareas en el mundo virtual VCL simplificado que ella construyó para usted. También puede profundizar en el mundo de VCL para explorar su relación de mapeo con el mundo real (es decir, la interfaz real de la plataforma Windows) y aprender el diseño de su Framework. También puede ampliar ese mundo virtual VCL para adaptarlo a sus necesidades. ¡Me siento afortunado de que exista una herramienta de desarrollo de este tipo, y aún más afortunado de poder elegirla y completar mi trabajo con ella! (En realidad, el lenguaje de programación y las herramientas de desarrollo utilizadas en el proyecto a menudo están fuera de su control y estarán restringidos por muchos factores. Por ejemplo: el entorno de hardware del cliente, el entorno del sistema operativo, el entorno de desarrollo, el costo y la licencia de las herramientas de desarrollo. Certificado, etc. Por lo tanto, tengo mucha suerte de poder elegir mis herramientas de desarrollo favoritas para el trabajo de desarrollo). Mi enfoque es aprender conceptos orientados a objetos a través de C ++ y usar Delphi para resolver problemas del mundo real. Al mismo tiempo, también verifica el dicho: aprender de los lugares difíciles y aplicar desde los lugares fáciles. Los programadores reales usan C++, los programadores inteligentes usan Delphi. Bueno, ¡los programadores realmente inteligentes usan C++ para entender Delphi!
1.2 Más ventajas de Delphi
He utilizado muchas herramientas de desarrollo convencionales, ¿por qué elegí Delphi? Tal vez sea porque no estoy familiarizado con otras herramientas de desarrollo en profundidad, ¡pero la excelencia de Delphi es al menos una de las razones! ¿Qué tiene de bueno Delphi? n El desarrollo eficiente de Delphi es una RAD (herramienta de desarrollo rápido de aplicaciones), que tiene un entorno de desarrollo visual. Por supuesto, existen muchas herramientas de desarrollo con funciones similares (como Visual Basic), pero Delphi tiene las siguientes características únicas: 1. ) Delphi está verdaderamente orientado a objetos. Todos los componentes de su biblioteca VCL basados en tecnología OO se pueden heredar para crear nuevos componentes, incluida la clase de formulario TForm. Por el contrario, los componentes ActiveX carecen de esta flexibilidad. 2) La tecnología CodeInsight de Delphi (es decir, la función de autocompletado de código) se basa en información del compilador, mientras que VB utiliza información de biblioteca de tipos. La ventaja de utilizar información del compilador es una mayor flexibilidad. Sin embargo, los programadores a menudo se quejan de que las indicaciones del código de Delphi tardan demasiado. De hecho, personalmente siento que después de acostumbrarme a su velocidad, puedo experimentar una sensación de placer rítmico. n El eficiente lenguaje Delphi se basa en el lenguaje Object Pascal. Este es un lenguaje verdaderamente orientado a objetos pero elegante. No es inferior a otros lenguajes orientados a objetos en términos de integridad funcional, pero al mismo tiempo no busca más y aumenta ciegamente la complejidad. Esto permite a los desarrolladores recibir soporte completo al diseñar utilizando varios patrones sin tener que considerar demasiados detalles del lenguaje/compilador durante la implementación. n Eficiencia de compilación Se puede decir que Delphi es el compilador de código local de lenguaje de alto nivel más rápido en la plataforma Windows. ¿Cuáles son los beneficios de la compilación rápida? Un compilador rápido le permite cambiar con frecuencia entre modificar código y compilar y ejecutar. Al menos, estoy muy acostumbrado a esta forma de trabajar: ejecute el programa para ver el efecto, salga del programa, modifique una pequeña cantidad de código y luego ejecute el programa. Y el compilador de Delphi nunca me hace sentir esperando. n Ejecución eficiente Delphi no solo tiene una velocidad de compilación rápida, sino que también la eficiencia de ejecución del código de destino generado es muy alta. Delphi y C++Builder utilizan el mismo optimizador de back-end, por lo que el código generado por él es tan eficiente como el código generado por un excelente compilador de C++. Delphi genera código completamente nativo, por lo que el archivo ejecutable resultante de la compilación de Delphi se puede ejecutar y distribuir de forma independiente (esto es muy importante para el desarrollo de "software ecológico"). No se requiere ningún otro soporte de tiempo de ejecución. Por supuesto, también puede elegir la compilación de enlace dinámico, que puede reducir en gran medida la longitud del archivo ejecutable. Sin embargo, en este caso, al distribuir el programa, los archivos de ejecución necesarios deben distribuirse al mismo tiempo. n Mantenimiento eficiente C++ otorga mucho poder de decisión a los programadores, por lo que es muy poderoso. Sin embargo, al mismo tiempo, usar C++ para escribir código excelente orientado a objetos requiere que los programadores tengan ciertas cualidades. Los programadores de Delphi estarán limitados al marco proporcionado por VCL hasta cierto punto (por supuesto, es completamente posible deshacerse de la programación VCL en Delphi. En términos relativos, es más fácil crear código bien diseñado). Visual Basic no proporciona ningún mecanismo de programación orientado a objetos (VB6.0 y versiones anteriores se basan en objetos, no en objetos). La excelencia del marco del código reduce en gran medida los costos de mantenimiento del software. Por todas las razones anteriores, ¡elijo Delphi!
1.3 Tema de este libro
Normalmente escribimos mucho código, para la empresa, para nosotros o para amigos. A veces, para verificar una idea o aprender una determinada tecnología, escribo algún código experimental. El ciclo de vida de dicho código es muy corto y básicamente no requiere mantenimiento. Puedes escribirlo como quieras. Sin embargo, cuando realmente deseas completar un proyecto, el diseño del código es muy importante. Porque dicho código requiere mantenimiento a largo plazo, modificación o mejora constante. El diseño de código desordenado hace que el mantenimiento sea difícil o imposible, y modificar dicho código significa más errores o desastres. Por lo tanto, antes de poder escribir código, es necesario diseñarlo. El diseño mencionado aquí no se refiere al diseño funcional, sino al diseño del marco del código por parte de los programadores antes de codificar, para que el código sea más fácil de entender y mantener en el futuro. A menudo escucho un dicho: la vida del programa de un programador tiene solo 35 años. Nunca creo que la vida útil de un programador sea de solo 35 años. Tal vez después de los 35 años, la capacidad de implementación (en realidad la capacidad de artesanía) puede disminuir, mientras que la capacidad de diseño no disminuye sino que aumenta con la experiencia. Esto es lo más preciado. La columna vertebral de los equipos de desarrollo de software extranjeros generalmente son personas de alrededor de 40 años. Esos son programadores maestros que no pueden ser programadores después de los 35 años y no están calificados para ser llamados programadores. La ingeniería de software necesita convertir a los programadores en codificadores y convertirse en un eslabón en la línea de ensamblaje, y el trabajo de diseño lo completan diseñadores especializados (como los diseñadores de marcos). Quizás la tendencia sea refinar la división del trabajo, pero si estamos satisfechos con ser codificadores o esperamos convertirnos en diseñadores depende de nuestra visión y esfuerzos. Abra sus horizontes, en lugar de limitarse y entregarse a "lograr maestrías". La capacidad de realización es la base. Sólo con cierta capacidad de realización podemos crecer. Sin embargo, es sólo una condición necesaria, no suficiente. De lo contrario, sería como subir a la ladera de la montaña y pensar que has llegado a la cima de la montaña y estancarte. Entonces, solo puedes ser un codificador y la vida útil de tu programa es de solo 35 años. Después de obtener esta perspectiva, espero que este libro pueda ayudarle a comenzar. Los libros relacionados con Delphi publicados en China básicamente explican su implementación. El título de este libro es "Avance de Delphi Masters". Entonces, suponga que ahora es un maestro de Delphi. Por lo tanto, este libro no cubrirá demasiadas técnicas de implementación. Aunque hay códigos de ejemplo, la atención se centra en el diseño de su arquitectura, no en su implementación. Llegados a este punto, es posible que haya adivinado el tema de este libro: cómo utilizar la tecnología orientada a objetos en Delphi para crear código bien diseñado. En mi opinión, escribir código es una creación artística. El código elegante se explica por sí mismo sin necesidad de comentarios excesivos. Cuando hay demasiados comentarios, es hora de considerar si el diseño es razonable. Escribir un libro también debería ser una creación artística. Si puedes contar a los lectores tu propia comprensión y experiencia artística sin necesidad de demasiadas "anotaciones" (tonterías que desperdician espacio), será un gran éxito. Espero poder hacerlo, al menos hacer lo mejor que pueda.
1.4 Resumen
Creo que es inevitable para mí emprender el camino de la programación. Ser programador profesional también es lo que soñé y realicé. Sin embargo, hay que decir que la aparición de Delphi y el hecho de que lo conocí, me familiaricé, me obsesioné y pasó a formar parte de mi trabajo fue una sorpresa inesperada. Lo que quiero decir aquí es que deberías ser más insistente contigo mismo. Cuando te hayas posicionado claramente y sepas claramente el camino que has elegido, ya no necesitarás tener dudas ni escrúpulos y simplemente seguir adelante. Aunque puede que al final no tenga éxito (por supuesto, la definición de éxito de cada persona es diferente), ¡amo lo que amo sin ningún arrepentimiento!