안녕하세요! 쏘코입니다.
지금까지는 컴퓨터를 통해서 할 수 있는 일 하나하나에 대해서 살펴봤다면,
이제는 프로그래밍, 프로그래머라는 말이 어떤 의미를 가지는 지에 대해서 알아보도록 하겠습니다.
목차
0. 프로그래밍이란 무엇인가?
프로그래밍의 어원에 대해서 알아봅시다.
옛날 음악회에서 시간의 순서에 따라서 공연이 진행되는 것들을 프로그램이라고 했었다고 합니다.
그 이후로 시간의 순서에 따라 어떤 일이 일어나는 것들을 프로그램이라고 부르고 있다고 합니다.
그렇다면 프로그래밍은 프로그램을 만드는 일이 되겠죠?
이번에는 컴퓨터가 존재하는 현 시대의 프로그램에 대해 살펴보겠습니다.
컴퓨터가 각각의 작업들 하나하나는 그것 하나로는 크게 의미가 없지만,
내가 하고자 하는 일이 무엇이냐에 따라 그 일을 하기 위해 필요한 각각의 작업들이 시간의 순서에 따라 실행되게 할 수 있다면 이것을 자동, 영어로 Automation을 할 수 있게 됩니다.
우리가 프로그래밍 언어를 배우고 프로그래밍을 하는 이유는 자동화된 처리를 하기 위해서라고 이야기 할 수 있고,
지금부터 우리는 자동화를 하는 방법을 배워보도록 하겠습니다.
오랜만에 새롭게 프로젝트를 하나 만들어봅시다.
Programming이라는 프로젝트를 하나 만들고, Program이라는 파일 하나를 만들어줍시다.
여기에 프로그램은 무엇인가를 따져보는 코드를 작성하도록 하겠습니다.
위와 같은 코드가 있다고 생각할 때, 코드는
1
2
3
으로 문장 순서대로 출력될 것입니다.
지금은 이렇게 해야할 일이 3가지 밖에 없지만, 1억 줄의 해야할 일이 있다면 어떨까요?
이것들을 우리가 원하는 대로 배치를 하면 컴퓨터는 이 작업을 순차적으로 실행해 주는 것을 통해서 자동화를 할 수 있게 됩니다.
인간이 하루종일 할 수 없는 일을 기계에게 위임해서 자동화 할 수 있게 해주는 컴퓨터 언어 중 하나가 자바라는 것을 기억하면 되겠습니다!
1. IoT 라이브러리 설치하기
실제로는 아니지만, 어떤 사물을 동작하게 할 수 있는 프로그램을 한번 만들어보도록 하겠습니다.
실제로 움직인다고 "가정"하는 겁니다!!
그렇다고 처음부터 백지에 모든 것을 짤 수는 없으니,
이미 존재하는 자료인 라이브러리를 가져와서 만들어 보도록 하겠습니다.
아래 영상의 저자인 이고잉님의 github에서 자료를 다운로드 받습니다.
egoing/java-iot
Contribute to egoing/java-iot development by creating an account on GitHub.
github.com
들어가시면 Code라는 초록색 버튼이 있고,
이 버튼을 누르고 Download ZIP 버튼을 눌러 ZIP 파일을 다운로드 받아서 압축을 해제합니다.
압축을 풀면 폴더 안에 org라는 폴더가 있을 것입니다.
이 폴더를 그대로 프로그래밍 폴더로 끌어오면, 파일을 프로젝트에 복사를 할 수 있습니다.
Package Explorer에는 새로운 org.opentutorials.iot라는 폴더 안에 패키지 파일들이 생성된 모습을 볼 수 있고,
navigator에는 org > opentutorials > iot 폴더 안에 .java 파일들이 가득 복사된 것을 볼 수 있습니다!
이것으로 라이브러리를 내 프로젝트에 가져오는 것까지 완료했습니다!!
2. IoT 프로그램 만들기
OKJavaGoInHome 클래스를 만들어줍니다.
이때 Package에 값이 있다면 지워줍니다!
org 폴더 안에 있는 프로그램들을 부품으로 나만의 프로그램을 만들어보도록 하겠습니다.
가상의 상황을 생각해 보겠습니다.
밖에 있다가 집으로 들어올 때 기다리지 않도록 미리 엘리베이터가 1층에 있도록 부르고, 카드를 찍지 않아도 알아서 보안을 해제하고, 무섭지 않도록 집의 불을 켜 놓을 수 있다면 좋겠죠?
위와 같은 일들을 모두 처리할 수 있는 프로그램이 있다면 얼마나 좋을까요..!
먼저 엘리베이터가 1층으로 오게 하고 싶습니다.
우리가 가져온 부품을 편하게 사용하기 위하여 맨 윗줄에 org.opentutorials.iot.Elevator를 import합니다.
이렇게 한번 import를 하면 Elevator만 써도 알아서 org.opentutorials.iot에 있는 Elevator를 사용하게 됩니다.
(import를 하지 않으면 사용할 때마다 매번 org.opentutorials.iot.Elevator를 작성해야 합니다!!)
그리고 JAVA APT 507과 관련된 요소들을 자주 사용할 것이기 때문에 따로 id에 값을 저장해둡시다.
(String id = "JAVA APT 507";)
이제 엘리베이터를 불러봅시다!
Elevator myElevator = new Elevator(id);
라는 코드를 사용함으로써 myElevator이라는 Elevator형 변수에
new Elevator(id);
라는 새로운 Elevator형 데이터를 만들어서 넣어줍니다.
이 작업을 통해 JAVA APT 507의 엘레베이터를 불러왔습니다.
그리고 엘리베이터라는 데이터가 쓸 수 있는 callForUp이라는 메소드를 사용해서 엘리베이터가 1층으로 올 수 있도록 합니다.
이번에는 아파트의 보안도 해제해보도록 하겠습니다.
똑같은 방식으로 Security라는 라이브러리를 import 해줍니다.
똑같은 방식으로 Security형 데이터를 mySecurity라는 변수에 넣고, mySecurity를 꺼줍니다.
이제 집의 불을 켜봅시다.
똑같은 방식으로 Lighting이라는 라이브러리를 import 해줍니다.
똑같은 방식으로 Lighting형 데이터를 2개 만들어서 hallLamp와 floorLamp에 넣고, 두 램프를 on 상태로 만들어줍니다.
여기까지 만든 내용을 전부 모아보면 아래와 같습니다!
그리고 이걸 실행하면 프로그램이 순서대로 명령한 일을 수행합니다.
(엘리베이터 1층으로 부르기 → 보안 해제하기 → 거실 불 켜기 → 바닥 불 켜기)
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;
public class OKJavaGoInHome {
public static void main(String[] args) {
String id = "JAVA APT 507"; // 중복 제거
// Elevator call
Elevator myElevator = new Elevator(id); // 자바 아파트에 있는 엘리베이터가 new Elevator("JAVA APT 507")이 된다!
// myElevator는 Elevator이라는 데이터만 올 수 있다!
myElevator.callForUp(1); // 1층으로 엘리베이터 보내라!
// Security off
Security mySecurity = new Security(id); // 자바 아파트의 보안을 해제한다
mySecurity.off();
// Light on
Lighting hallLamp = new Lighting(id + " / Hall Lamp"); // 507호의 거실 램프가 켜지도록 설정
hallLamp.on();
Lighting floorLamp = new Lighting(id + "/ floorLamp"); // 507호의 바닥 램프가 켜지도록 설정
floorLamp.on();
}
}
위 과정들을 통해 우리는 엘리베이터를 부르고, 보안을 끄고, 불을 켜는 프로그램을 만들 수 있었습니다.
우리는 가상의 상황을 가정해서 이렇게 만들었지만, 현실에서는 이런 프로그램이 실제로 동작할 수 있도록 연결되어 있겠죠?
이렇게 다양한 일을 편리하고 빠르게 수행할 수 있도록 해 주는 것이 바로 프로그래밍입니다!
지금까지 배운 내용과 몇 가지 새로운 내용을 바탕으로 실제 IoT와 유사한 기능을 수행하는 프로그램을 만들었습니다.
실제로 동작하지는 않지만 현실에서의 IoT 컨트롤도 전체적인 맥락은 같습니다.
이제 프로그래밍이 얼마나 대단한 일인지 깨달았죠!!
다음 포스팅에서는 스스로 모르는 것을 찾아내기 위한 도구인 디버거에 대해서 알아보겠습니다!
읽어주셔서 감사합니다 😁😁
최근댓글