Найбільша відмінність - це дизайн інтерфейсу користувача. Хороший графічний інтерфейс може зробити або зламати додаток. Шанувальники Mac звернуть увагу на чудово розроблений графічний інтерфейс користувача середнього додатка для Mac OS X, і у них є сенс, але це не проблема технології - це проблема дизайну / етосу / зручності використання.
Користувач може робити все, що завгодно, в будь-якому порядку в будь-який час, на відміну від консольної програми, в якій ви або просите ввести, або повідомте їм вихід. Ви не можете припустити, що вони будуть виконувати порядок, на який ви сподіваєтесь, якщо не застосувати майстер робочого процесу.
Як уже згадувалося, події відіграють велику роль у цьому, і ви можете отримати декілька подій, коли ви обслуговуєте останню, так що ви не можете реально побудувати свій стан на основі "поточної події". Використовуйте закриття або подібний механізм, щоб підтримувати контекст у різних подіях. У консольному додатку ваш FSM, як правило, є автономним навколо циклу "отримати введення, обробляти введення, оновити вихід". У програмуванні графічного інтерфейсу не існує такої ж структури - "головний" - це річ, керована подіями, часто - оператором ginormous switch ().
Вам потрібно врахувати різні розміри / роздільну здатність екрана і дозволити GUI змінювати розмір від 800x600 до максимального монітора користувача.
Потрібно враховувати різні стратегії введення - миша, клавіатура, сенсорне обладнання. Деякі технології пропонуються безкоштовно (прокрутка миші), інші потребують певної інтеграції (чорнила).
Доступність - графічний графічний інтерфейс набагато більше підходить для менш здатних користувачів, які мають обмежений зір, слух, моторику чи когнітивні навички. Шум «дінь» приємний і очевидний у порівнянні з критичним повідомленням про помилку на консолі.
Інтернаціоналізація - я припускаю, що ваш консольний додаток призначений лише для США / ANSI, але коли ви ввійдете в графічний інтерфейс, ви можете мати пакети мови / ресурсів, які можуть орієнтуватися на інші мови та регіони без зміни кодування, якщо ви підготувались до нього з почати. Наприклад, у коді немає жодних жорстких мовних рядків - все як пошук ресурсів.
У вас є набагато більше варіантів технології впровадження - веб-бази, різні набори GUI, Flash / WPF тощо.
Використання кольору та анімації. Програми консолей, як правило, однотонні і не дуже оживляють. Багато сучасних фреймворків графічного інтерфейсу надають тематичні віджети та мають анімаційні ефекти переміщення / розмір / показ / приховування, часто безкоштовно.
Графіка. Консольні програми іноді використовують графік ASCII для діаграм, але додаток GUI дає повну графічну здатність. Прекрасне мистецтво теж може змінити велику роль.