Don't Panic
in Java ☕ 2분 읽기

[Java] 구조적 프로그래밍

목차

동일한 프로그램이라도 방법을 달리하여 만들 수 있다.

동일 프로그램의 다른 구현 방법

프로그래밍은 절차다.

함수와 전역변수의 지역화

함수가 가지는 능력: 코드를 잘라낼 수 있다.

함수로 코드를 분리하는 개념

  1. 함수들과 공유되지 않을 전역변수는 불필요하다.
  2. 공유되지 않을 전역변수를 지역화하는 것이 부품화에 용이하다.

구조체 배열

  • 구조체: 데이터를 구조화한 것.
  • 자바에서는 클래스 자체가 데이터를 구조화할 뿐 아니라 함수까지 포함하므로, 클래스를 데이터 구조화라고 보기도 한다.

구조체 배열

가변길이 구조체

자바에서는 주소라는 걸 잘 쓰지 않는다.

기본 자료형은 임시 변수나 제어 변수로 쓰는 것이지, 관리되는 값으로 쓰는 경우는 거의 없다.

가변길이 구조체 1

가변길이 구조체 2

가변길이 구조체 3

연습문제

가변길이 구조체 연습문제

함수 오버로딩

  • 같은 기능을 하지만 다른 인자를 가지는 함수를 추가하는 것.
  • 두 번 구현할 필요가 없으며, 하나만 구현해도 위 경우를 커버할 수 있다.

함수 오버로딩 예시

오버(over)해서 로드(load)하는 방식이라고 하여 함수 오버로드라고 한다.

클래스 함수 호출과 스택

프로그램이 실행될 때, 특히 메인 함수가 실행될 때 알아야 할 것이 있다. 메모리에 올라가는 코드는 컴파일된 결과인 이진 코드이며, 이렇게 메모리에 올라간 것을 프로세스라 한다.

프로세스의 메모리 영역

프로그램의 main 함수 4부분은 데이터 영역인 스택 부분에 미리 준비되어야 한다.

  • 보라색은 참조 변수, 녹색은 값이다.
  • 1, 2, 3을 통해 힙에 공간이 생긴다.
  • 힙 부분에서 4에서 초기화가 되고, 5 연산이 진행되면 참조 변수가 힙을 가리키게 된다.
  • 그다음 연산은 input으로 함수를 호출하게 된다.

함수 호출과 스택

함수가 호출되면 위로 쌓이고 사라지면 내려가는 식으로 메모리가 사용되며, 이 공간이 스택이다.

자바는 런타임 환경에 의해 참조되지 않는 객체가 힙에 있으면 메모리 누수가 일어나므로, 자바 환경에서 알아서 지워준다(가비지 컬렉션).