Modelica es un lenguaje orientado a objetos desarrollado para describir de manera sencilla modelos de sistemas dinámicos que podrían llegar a ser muy complejos. Además de las características básicas de todo lenguaje orientado a objetos. Modelica contiene herramientas específicas que permiten describir las relaciones constitutivas de los distintos componentes de cada modelo y las relaciones estructurales que definen la interacción entre dichos componentes. De esta manera, el lenguaje permite asociar cada componente de un sistema a una instancia de una clase de Modelica. Adicionalmente, los componentes típicos de los sistemas de distintos dominios de la física como la termodinámica, sistemas hidráulicos, de los procesos químicos como reacciones químicas, disolución de gases, difusión, transportes de membrana, flujos osmóticos, celdas electroquímicas, electrodos y de la ingeniería, que pueden agruparse en librerías de clases para ser reutilizados. De hecho, existe una librería estándar de clases de Modelica, que contiene los principales componentes básicos de sistemas eléctricos, mecánicos(traslacionales, rotacionales y multi cuerpos), térmicos, y diagramas de bloques. Otras librerías, disponibles en Internet, contienen componentes.[1][2] La investigación del comportamiento de los sistemas dinámicos, es parte importante de todas las ramas de la ingeniería. Esto incluye su modelado matemático y la simulación de este. Para los sistemas complejos, el modelado y su simulación, son las herramientas utilizadas para su análisis y diseño.
Aunque Modelica se parece a los lenguajes de programación orientados a objetos, como C++ o Java, difiere en dos aspectos importantes. En primer lugar, Modelica es un lenguaje de modelado más que un lenguaje de programación convencional. Las clases de Modelica no se compilan en el sentido habitual, sino que se traducen en objetos que luego son ejercitados por un motor de simulación. El motor de simulación no está especificado en el lenguaje, aunque sí lo están ciertas capacidades necesarias.
En segundo lugar, aunque las clases pueden contener componentes algorítmicos similares a las sentencias o bloques de los lenguajes de programación, su contenido principal es un conjunto de ecuaciones. A diferencia de una sentencia de asignación típica, como
x := 2 + y;
en la que al lado izquierdo de la sentencia se le asigna un valor calculado a partir de la expresión del lado derecho, una ecuación puede tener expresiones tanto en el lado derecho como en el izquierdo, por ejemplo
x + y = 3 * z;
Las ecuaciones no describen asignaciones sino igualdades. En términos de Modelica, las ecuaciones no tienen una causalidad predefinida. El motor de simulación puede (y normalmente debe) manipular las ecuaciones simbólicamente para determinar su orden de ejecución y qué componentes de la ecuación son entradas y cuáles son salidas.