[부스트코스/쉽게 배우는 자바 1] 9. 프로그래밍이란 무엇인가, IoT 프로그램 만들기

zzzzsb·2021년 2월 26일
0

부스트코스 쉽게 배우는 자바 1


Chaper 9


9-1. 프로그래밍이란 무엇인가

프로그램이란?

  • 프로그램은 과거에 음악회 같은 곳에서 연주할 곡들의 순서를 나타내는 것이었다고 한다.
  • 컴퓨터에서의 프로그램도 마찬가지로 시간 순서에 따라 실행할 작업들의 순서를 뜻한다.

컴퓨터 프로그래밍의 의미

  • 컴퓨터가 시간에 따라 정해진 순서로 작업을 실행하게 된다면, 우리는 업무를 자동적으로 처리할 수 있게 된다.
  • 그렇기에 프로그래밍 언어로 프로그램을 만드는것은 우리가 해야하는 업무의 자동화된 처리를 위해서 라고 할 수 있다.

  • 기존 작업공간에서 Programming 프로젝트를 새로 생성한다.

  • 그 안에 Program 클래스를 생성한다.

Program.java 소스코드

public class Program {
 
    public static void main(String[] args) {
         
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
 
    }
 
}

Program.java 소스코드 분석

위 코드는 화면에 1, 2, 3을 순서대로 출력한다.

  • 만약, 3줄이 아니라 1억개의 숫자를 출력해야한다면?
  • 혼자 하는 작업이 아닌 수많은 사람들이 엄청나게 많이 사용하는 작업이라면?
  • 굉장히 오래 걸리기에 끝날때까지 하염없이 계속 붙잡고 있어야 하는 작업이라면?
  • 우리는 어떻게 해결할 수 있을까?
  • 이런 경우 컴퓨터 프로그래밍을 이용해 순차적인 실행으로, 사람이 잘 하지 못하는 일을 기계에게 위임하고, 자동화할 수 있다.
  • 그리고 컴퓨터 프로그래밍을 할 수 있게하는 언어 중 가장 유명한 것이 자바이다.

9-2. 프로그램 만들기 - IoT 라이브러리 설치하기


컴퓨터 프로그래밍을 통해 사람이 하기 어려운 일들을 기계에게 위임하여 자동화 할 수 있음을 알게되었다. 이번 강의에서는 IoT 모의 프로그램을 만들어보며 이러한 기능을 체감해 보겠다!

IoT 패키지 설치하기

IoT 모의 프로그램 제작을 위해 외부 패키지를 설치해보자.

패키지 설치링크

https://github.com/egoing/java-iot
https://gitlab.com/egoing/java-iot
https://bitbucket.org/egoing/java-iot/src/master/

이 중 하나의 링크를 통해 org.opentutorials.iot 패키지를 다운받으면 된다.

  • 깃허브에서 압축된 패키지 파일을 다운받는다.

  • 압축을 풀면 org-opentutorials-iot 폴더 안의 자바 파일을 확인할 수 있다.

Programming 프로젝트에 org.opentutorials.iot 패키지를 설치하기 위해,
org 폴더를 이클립스의 Navigator 뷰의 Programming 프로젝트로 드래그 앤 드랍 한다.
(Package Explorer 뷰에서도 가능함)

  • Copy files and folders 옵션을 선택하여 OK버튼을 클릭한다.

  • org.opentutorials.iot 패키지가 설치된 것을 확인할 수 있다.

9-3. IoT 프로그램 만들기

  • Programming 프로젝트에서 OkJavaGoInHome 클래스를 생성한다.
  • 패키지 부분은 default가 되도록 지워준다.

우리가 집에갈 때 일어나는 일들을 정리해보자.

  • 엘리베이터를 부르고(Elevator call),
  • 현관문의 보안을 해제하고(Security off),
  • 집에 들어왔을 때 불이 켜져있으면(Light on) 좋을것 같다.

이러한 기능을 이전 시간에 설치했던 거짓 IoT 패키지를 이용하여 만들어 볼것이다.


OkJavaGoInHome.java 소스코드

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);
        myElevator.callForUp(1);
         
        // Security off 
        Security mySecurity = new Security(id);
        mySecurity.off();
         
        // Light on
        Lighting hallLamp = new Lighting(id+" / Hall Lamp");
        hallLamp.on();
         
        Lighting floorLamp = new Lighting(id+" / floorLamp");
        floorLamp.on();
 
    }
 
}

OkJavaGoInHome.java 소스코드 분석

import org.opentutorials.iot.Elevator;
// org.opentutorials.iot.Elevator ....
Elevator myElevator = new Elevator(id);
  • import 구문을 이용하면 org.opentutorials.Elevator 같이 입력해야 하는 구문을 Elevator로 단순하게 할 수 있다.
String id = "JAVA APT 507";
  • JAVA APT 507과 같이 반복적으로 사용되는 값은 변수로 지정하여 재사용할 수 있다.
  • 의미있는 이름(id)을 지정하여 코드의 가독성을 높일 수 있다.

Elevator call

Elevator myElevator = new Elevator(id);
  • id라는 변수는 JAVA APT 507을 의미한다.
  • myElevator라는 변수는 JAVA APT 507의 엘리베이터를 의미한다.
  • myElevator는 자료형이 Elevator여야 한다.
myElevator.callForUp(1);
  • 엘리베이터를 1층으로 부르는데, 위로 올라가는 엘리베이터를 부른다는 뜻의 코드이다.

Security off

Security mySecurity = new Security(id);
  • id라는 변수는 JAVA APT 507을 의미한다.
  • mySecurity라는 변수는 JAVA APT 507의 보안을 의미한다.
  • mySecurity는 자료형이 Security여야 한다.
mySecurity.off();
  • 현관문의 보안을 해제한다는 뜻의 코드이다.

Light on

Lighting hallLamp = new Lighting(id+" / Hall Lamp");
Lighting floorLamp = new Lighting(id+" / floorLamp");
  • id라는 변수는 JAVA APT 507을 의미한다.
  • hallLamp라는 변수는 JAVA APT 507의 hallLamp를 의미한다.
  • floorLamp라는 변수는 JAVA APT 507의 floorLamp를 의미한다.
  • hallLamp, floorLamp는 자료형이 Lighting여야 한다.
hallLamp.on();
floorLamp.on();
  • 램프의 불을 켠다는 뜻의 코드이다.

OkJavaGoInHome.java 소스코드 실행결과

패키지를 이용해 모의 IoT프로그램을 자바로 만들어 보았다.
이로써 우리가 집에 갈때 일어나는 일들을 자동화 할 수 있음을 확인해볼 수 있었다.


부스트코스
https://www.boostcourse.org/opencourse

부스트코스 쉽게 배우는 자바 1
https://www.boostcourse.org/cs126


profile
성장하는 developer

0개의 댓글