Interface

양치는 하셨나요·2024년 8월 19일

인터페이스! 뭔가 많이 들어봤는데... 확 와닫지 않는데요...

뭔가 보여지는거? 연결되는거? 명령 내리는거? 이런 느낌이 드는 단어입니다.

인터페이스

개념

우선! 사전적 정의 먼저 살펴봅시다

인터페이스는 서로 다른 두개의 시스템, 장치 사이에서 정보나 신호를 주고 받는 접접 혹은 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.

이 내용 다음에 하드웨어, 소프트웨어, 사용자 별로 구분해 설명이 이어지고 있습니다.

하드웨어 인터페이스

오? 하드웨어 인터페이스를 보니 생각나는 것이 있는데요, 바로 입출력 장치!

사용자의 요청을 입력 받거나 그렇게 처리된 정보를 보여주는 장치들을 말하는 거죠. 이 장치들을 인터페이스라고 했던 기억이 납니다. 이 또한 사용자와 컴퓨터 사이에서 신호를 주고 받게 도와주는 장치이니 인터페이스가 될 수 있겠네요.

사용자 인터페이스

흔히 UI (User Interface) 라고 말하는 부분이죠. 사람과 소프트웨어를 잇는 다리 라고 표현할 수도 있습니다. 음.. 좀 더 와닫게 말하자면 우리가 사용하는 화면을 가지고 있는 모든 전자기기에서 보이는 화면들이 모두 UI 라고 할 수 있는데요, 지금 이 글을 쓰고 있는 화면에 보면 사진, 동영상 등을 올릴 수 있도록 하는 버튼부터 지금 글을 쓰고 있는 이 부분 까지 모조리 다 UI 라고 할 수 있습니다.

이런 UI는 사용자의 만족도에 아주 큰 영향을 줄 수 있는 부분인데요, 흔히 우리가 "어우 쓰기 불편해" 라고 하는 것들을 한 번 생각해 봅시다. 어떤 어플리케이션을 사용하는데 필요한 화면을 띄우는데 버튼이 너무 작아서 잘못 누른 경험이라던지, 글자를 입력해야 하는데 글자가 깨져 보일 정도로 글자 영역이 작아서 불편한 경험 한 번 씩은 다들 있으실 겁니다. 반대로, 어플리케이션을 실행했는데 필요한 기능들이 바로바로 뜬다거나, 필요한 화면을 충분히 큰 사이즈로 보여주며 가독성을 높여준다거나 하는 경험들도 있을 겁니다. 이런 것이 바로 UI가 사용자의 만족도에 영향을 끼치는 부분이죠.

UI를 얼마나 편하게, 직관적으로, 이해하기 편하게 설계하느냐에 따라 만족도가 크게 달라질 수 있다고 하는 부분이 바로 이런 것 때문일 것입니다.

소프트웨어 인터페이스

소프트웨어 인터페이스는 서로 다른 소프트웨어 혹은 소프트웨어와 하드웨어 사이에서 서로 상호작용하고 통신할 수 있도록 하는 규칙과 프로토콜을 정의하는 것입니다...만 말이 참 어렵네요 ㅎㅎ

간단하게 봅시다.

우리가 자바에서 hello world! 라는 문자열을 출력하고 싶을 때 아래와 같이 작성하게 될 텐데요

System.out.println("hello world");
  • System. 즉 자바라는 프로그램이 돌아가고 있는 시스템에
  • Out. 출력한다는 메서드를 이용해
  • println. 한 줄의 문자열을 출력해 줘
  • ("hello world\"). 괄호 안의 문자열을
  • ; ← 명령 한줄 끝!

이런 식으로 각각의 부분 마다 소프트웨어가 처리하고자 하는 의미가 담겨 있는데요. 이것이 바로 라이브러리라고 불리는, 소프트웨어가 가지고 있는 명령어들을 사용한 것입니다.

하지만 라이브러리도 결국 우리 사람이 알아보기 쉬운, 사람의 단어로 이루어져 있네요.

이것을 컴퓨터는 어떻게 알아들을까요?

라이브러리의API 문자들은 각각 시스템에게 해당 명령을 요청 할 수 있도록 하는 중간 장치가 필요합니다.

이것이 바로 소프트웨어 인터페이스가 되겠습니다.

자바의 인터페이스

이런 소프트웨어 인터페이스 중에서 우리가 자주 접할 수 있는 것은 객체 지향 프로그래밍에서의 인터페이스라고 할 수 있습니다.

바로 이전 글에서 객체지향의 SOLID 원칙 중 I 의 내용이 인터페이스 분리의 원칙이었는데 이때의 인터페이스가 바로 그것입니다.

객체지향의 인터페이스는 응용프로그램과 운영체제 사이의 것이라고 할 수 있습니다. 명령을 통해 정보를 가져오거나 변환시키고 특정 동작을 시행시킬 수 있는 내용들이 들어가 있는 부분이 바로 인터페이스 이죠. 이런 인터페이스는 응용 프로그램 내의 객체들을 메서드를 통해 상호작용 하며 내부의 객체들에게 해당 명령에 대한 행동들을 수행 시킬 수 있죠.

특히 자바 내부에선 인터페이스라는 메서드 상속 시스템이 존재하는데 이는 메서드들을 한데 모아 관리 할 수 있게 하며 메서드들에 대한 접근을 더욱 원활하게 하도록 구현되어 있습니다.


결론

인터페이스란 소프트웨어와 하드웨어 상관 없이 두가지 이상의 시스템이 서로 상호작용 할 수 있도록 하기 위해 만들어진 것입니다.
인터페이스라는 내용 자체는 프로그래밍에 있어 중요한 내용 중 하나 이니 앞서 포스팅 한 객체지향 프로그래밍과 SOLID 원칙 게시물과 같이 꼭 읽어보길 바랍니다.

profile
프로그래밍을 잘하고 싶어요..

0개의 댓글