Por qué el lenguaje C no se puede programar según ideas orientadas a objetos.
Por supuesto que puedes utilizar el lenguaje C para la programación orientada a objetos.
La orientación a objetos en sí misma es una idea y el lenguaje utilizado para implementarla es solo un medio técnico. De hecho, la relación entre ideas y tecnología misma es la relación entre clase y objeto.
class oo {
//Esta es una clase ideológica orientada a objetos
};
oo java; oo Una implementación técnica específica de oo cxx; //c++ es una implementación técnica específica de oo
Tomando el sistema Windows como ejemplo, está escrito en lenguaje C, pero usa Pero está orientado a objetos. En este sentido, puede consultar reaccionaros (un sistema de Windows gratuito y de código abierto que se utiliza para enseñar los principios de los sistemas operativos en las universidades).
Puede ser más práctico dar un ejemplo. Por ejemplo, el sistema operativo tiene dos interfaces operativas, una es la interfaz GUI y la otra es la interfaz de la consola. Escriba un programa en la plataforma Windows y ejecútelo. está en cmd Cuando se ejecuta, se ejecuta el código de la interfaz de la consola, y cuando se ejecuta en la GUI, se ejecuta el código de la interfaz gráfica. En realidad, este es un ejemplo de polimorfismo en la programación orientada a objetos. El siguiente código de muestra se compila y pasa en vc6.0.
¿#incluir?
#incluir?
#incluir?
#incluir?< TLHELP32.H>
char?what_shell_run()
{
HANDLE?hSnap?=?CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,?0);
if?(hSnap==0){
return?_T('E');
}
PROCESSENTRY32?pe32?=?{0 };
pe32.dwSize?=?sizeof?pe32;
DWORD?dwSelfPid?=?GetCurrentProcessId();
DWORD?dwParentPid?=?~ 0;
for?(BOOL?bLoop=Process32First(hSnap,?&pe32);?bLoop!=FALSE;?bLoop=Process32Next(hSnap,?&pe32))
{
if?(dwSelfPid==pe32.th32ProcessID){
dwParentPid?=?pe32.th32ParentProcessID;
romper;
}
}
if?(dwParentPid==~0)?return?_T('U');
for?(bLoop=Process32First(hSnap,? &pe32);?bLoop!=FALSE;?bLoop=Process32Next(hSnap,?&pe32))
{
if?(dwParentPid==pe32.th32ProcessID){
if?(lstrcmpi(pe32.szExeFile,?_T("cmd.exe"))==0)
{
CloseHandle(hSnap);
return?_T('C');
}else?if?(lstrcmpi(pe32.szExeFile,?_T("explorer.exe"))==0){
CloseHandle(hSnap);
return?_T('G');
}
}?
}
CloseHandle(hSnap);
return?_T('U');
}
void?console(void)?{
printf("Este es un programa de consola\n");
}
void?gui?(void)?{
MessageBox(0,?_T("Este es un programa GUI"),?_T("GUI"),?MB_OK);
}
int?main()
{
char?ch?=?what_shell_run();
cambiar?(ch)
{
case?'C':
console();break;
case?'G':
gui();?break;
p>}
retorno?0;
}