[Java] Java와 객체지향 프로그래밍

2022. 5. 1. 22:29·방통대 컴퓨터과학과/3학년1학기
반응형

 

Java 언어와 Java 프로그램

Java 언어

  • Java는 미국 선 마이크로시스템즈(Sun Microsystems)라는 회사가 1990년 말에 개발하기 시작해 1996년에 첫 버전이 발표된 객체지향 프로그래밍(OOP, Object-Oriented Programming) 언어이다.
  • Java는 프로그래밍 언어와 실행환경(Runtime)을 함께 포함하고 있다.
    즉, Java 언어로 작성된 프로그램의 실행환경으로 기존 운영체제를 사용자히 않고 별도로 만들어진 'Java 플랫폼'을 사용한다.
  • Java는 문법적으로 C나 C++과 유사하지만 가장 큰 차이점이 있는데 이는 바로 Java가 완전한 객체지향 프로그래밍 언어라는 점이다.
  • Java 프로그래밍 언어의 특징
    • Java는 별도의 실행환경이 있기 때문에 운영체제와 무관하게 어디서든 실행할 수 있다. 이러한 특징을 '플랫폼에 독립적이다'라고 한다.
    • 객체지향 프로그래밍 언어이다.
    • 응용 프로그래밍과 웹 프로그래밍, 네트워크 프로그래밍에 용이하다.
    • 변수의 자료형에 대한 검사가 엄격하여 자료형의 불일치로 발생할 수 있는 오류를 최소화했다.
    • 예외처리 기능이 강화되었다.
    • 멀티 스레딩을 지원한다.
  • 스레드(thread)란 하나의 프로그램 내부에서 진행될 수 있는 세부 작업흐름이라고 할 수 있다. 따라서 멀티 스레딩이란 하나의 프로그램 내부에서 여러 개의 세부 작업이 동시에 진행되는 것이다.
반응형

Java 프로그램

  • Java 프로그램 : Java 프로그래밍 언어로 작성된 후 컴파일되어 Java 플랫폼에서 실행될 수 있는 프로그램을 Java 프로그램이라 한다.
  • Java 프로그래밍 언어로 작성된 소스 파일의 확장자는 '.java'이다.
  • Java 소스 파일을 컴파일하면 확장자가 '.class'인 새로운 파일이 만들어지는데 이를 Java 프로그램이라고 한다.
  • Java 프로그램은 클래스(class) 파일 또는 바이트코드(bytecode)라고도 한다.
  • Java 프로그램은 실행 방식에 따라 애플리케이션(application), 애플릿(applet) 두 가지로 나뉜다.

Java 애플리케이션

  • 컴파일 된 후 Java 플랫폼에서 바로 실행되는 Java 프로그램이다. 
  • Windows나 Unix/Linux와 같은 운영체제에서 Java 플랫폼을 통해 실행되는 일반적인 Java 프로그램이 여기에 속한다.

Java 애플릿

  • 컴파일된 후 HTML로 작성된 웹페이지에 포함되어 웹 브라우저를 통해 실행되는 Java 프로그램을 말한다.
  • 요즘에는 잘 사용하지 않는다.
  • HTML에 애플릿 프로그램을 포함시키기 위해 <APPLET> 태그를 이용한다.
반응형

Java 플랫폼과 개발환경

  • Java 플랫폼은 'Java 프로그래밍 언어로 작성된 Java 프로그램이 동작할 수 있는 환경'을 의미하며 운영체제와는 별개로 존재하는 또 다른 '실행환경'을 의미한다.
  • 컴파일된 프로그램(바이트코드)는 운영체제에 의해 실행되는 것이 아니라 별도의 Java 플랫폼이 실행시켜준다.
    즉, Java 프로그램이 구동되려면 운영체제 외에 해당 운영체제에 적합한 별도의 Java 플랫폼이 설치되어 있어야 한다는 점이다.
  • 운영체제 별로 적합한 Java 플랫폼을 설치한다는게 오히려 더 복잡하다고 느낄 수 있지만 Java 플랫폼을 설치하면 한 번 컴파일된 Java 프로그램은 운영체제와 상관없이 어디서든 동작할 수 있게 되어 소스 코드의 수정이나 재 컴파일이 필요없다.
  • Java 플랫폼의 특징
    • 프로그램의 실행을 위한 하드웨어와 소프트웨어 환경 제공
    • Java 프로그램을 실행시켜주는 실행 환경
    • 한번 만들어진 Java 프로그램은 운영체제와 상관없이 Java 플랫폼이 설치되어 있는 곳이면 어디서든 실행이 가능함
  • Java 플랫폼은 Java VM(Virtual Machine : 가상기계)와 Java API(Application Programming Interface)로 구성된다.

Java VM

  • Java VM은 JVM이라고도 한다.
  • VM은 가상의 기계라는 뜻이며 Java 프로그램을 실행시켜 주는 '구동 엔진'을 의미한다.
  • Java 프로그램의 실행에 필요한 모든 사항을 관리하고 지원해준다.
  • VM은 가비지 컬렉션(garbage collection)이라고 불리는 메모리 정리 작업을 자동으로 실행한다.

Java API

  • Java 프로그램을 실행하는 데 필요한 각종 라이브러리를 의미한다.
  • 기본 API는 Java 플랫폼에 기본적으로 포함된 라이브러리를 뜻한다.
  • 확장 API는 그 이외의 라이브러리를 의미하는데 별도의 설치가 필요하다.
  • API의 분류별 계층 관계는 '.표기법'을 사용한다. 
    ex) java.lang
  • Java 소스 코드의 컴파일 및 실행에 필요한 Java 컴파일러, Java VM, Java 기본 API를 한데 묶어 Java SDK(Java Software Development)라고 하는데 줄여서 JDK라고도 한다.
반응형

Java 메모장 코딩 및 실행

  • 원하는 경로에 메모장을 새로 만든다. 이때 주의!!
    확장자를 꼭 .txt에서 .java로 변경해야한다.

Hello.java를 만들었다.

  • 코드를 작성하고 저장한다.
public class Hello {
	public static void main(String args[]) {
		System.out.println("Hello!");
	}
}
  • cmd를 연다.
  • 메모장이 저장된 경로로 찾아간다.
    javac Hello.java
    java Hello
    를 순서대로 입력한다.
반응형

Hello!가 출력됐다.

  • 소스 코드를 컴파일하려면 JDK에 포함되어 있는 'javac' 명령어를 사용 → 컴파일되면 .class 파일이 생성된다.
  • 바이트코드를 실행하려면 'java' 명령어를 사용한다.
  • Java 애플리케이션이 실행되려면 하나의 main 함수를 포함해야 한다.
  • Java 애플리케이션은 하나의 public class를 포함하고 있으며, 그 이름은 소스 파일의 이름과 같아야 한다.

 

Java 프로그램 살펴보기

주석(comments)

  • 주석은 소스 코드의 이해를 돕기 위해 프로그래머가 작성하는 설명문
  • 컴파일이나 프로그램 실행과는 상관없이 작성할 수 있다.
  • /* ... */ : 여러 줄에 걸쳐 작성할 수 있음
  • /** ... **/ : 소스 코드 맨 앞에 소스 코드에 대한 전반적인 설명을 적기 위한 주석
  • // ... : 일반적으로 한 줄의 주석을 달고 싶을 때 사용한다.

클래스

  • 모든 Java 프로그램은 클래스 정의를 하나 이상 가지고 있어야 한다.
// 클래스 정의
class 클래스 이름 {
    .....
}
  • Java 소스 코드를 컴파일하면 '클래스이름.class'라는 클래스 파일(바이트코드)이 생성된다.
  • 클래스 파일의 파일 이름은 소스 코드 안에 정의되어 있는 클래스 이름에 따라 만들어진다.
  • 여러 개의 클래스가 정의되어 있는 소스 코드를 컴파일하면 정의된 클래스의 개수만큼 클래스 파일이 만들어진다.

main() 메서드

  • main() 메서드는 Java 프로그램을 실행시킬 때 가장 먼저 실행되는 메서드
  • public static void main(String args[])와 같은 형식으로 정의되어야 함
  • public과 static의 순서를 바꿀 순 있지만 일반적으로 public static으로 쓰는게 관례
반응형

객체지향 프로그래밍

  • 세상에 존재하는 유형 또는 무형의 대상인 객체(object)는 상태와 동작을 가진다.
    예를 들어 자동차라는 대상은 모델명, 생산연도, 배기량, 제조회사 등의 상태를 가질 수 있고 전진, 후진, 속도 올리기, 내리지 등의 동작을 가질 수 있다.
  • Java 프로그래밍 언어는 객체지향 프로그래밍 언어로서 프로그래밍의 대상을 상태와 동작을 갖는 객체라고 가정한다.
  • 객체지향 언어에서는 데이터와 함수를 분리하여 정의하지 않고 '클래스(class)'라는 새로운 개념을 도입하여 하나로 통합하여 대상을 표현한다.
  • 프로그램에서는 클래스를 통해 객체가 만들어지며 객체는 데이터를 의미하는 상태와 함수를 의미하는 동작을 함께 갖게된다.

 

객체와 클래스

  • 객체 : 독립적으로 존재하는 개별 대상 하나하나를 표현한 것으로 클래스의 실체를 의미한다. → 객체는 특정 클래스의 인스턴스이다.
  • 클래스 : 공통적인 특징이 있는 비슷한 대상을 묶고 정형화하고 추상화시킨 개념이다. 또한 프로그램 구성의 기본 단위이이다.
  • Java에서는 객체를 직접적으로 정의하여 다루는 것이 아니라 비슷한 유형의 객체들을 묶어 정형화시키고 추상화시킨 클래스를 먼저 정의하고 클래스를 이용하여 객체를 다룬다.
  • 추상화 : 프로그래밍의 대상이 되는 사물을 표현하는 방식으로, 사물의 구체적인 모든 사실이 아닌 추상적이고도 전형적인 사실만으로 사물을 표현하고 설명하는 방식이다.
    ex) 버스, 트럭, 승용차, SUV, 택시를 추상화하면 자동차가 된다.
  • Java 언어에서는 추상화 도구로 '클래스'를 사용한다.
  • 클래스는 필드(field)와 메서드(method)로 구성된다.
  • 필드 : 클래스가 표현하고자 하는 대상들이 공통적으로 가지는 상태값을 저장하는 변수
  • 메서드 : 필드에 저장되어 있는 상태값을 조회 또는 변경하거나 상태와 관련된 특별한 동작을 수행하는 데 사용된다.
  • 필드와 메서드는 클래스에 캡슐화 되어있다.
  • 클래스 정의로부터 객체들이 만들어지고 객체들 간의 상호작용으로 프로그램이 동작한다.
반응형

상속

  • 상속 : 클래스와 클래스 간의 관계를 나타내는 용어로, 클래스 A가 클래스 B로부터 B의 구성요소인 필드와 메서드를 물려받았을 때, '클래스 A는 클래스 B를 상속한다.' 또는 '클래스 A는 클래스 B로부터 상속받는다.'라고 말한다.
  • 이때 클래스 A를 클래스 B의 서브(sub), 자식, 파생(derived) 또는 하위 클래스라 한다.
  • 클래스 B를 클래스 A의 슈퍼(super), 부모, 기반(base) 또는 상위 클래스라 한다.
  • 슈퍼 클래스는 여러 서브 클래스의 공통적인 특성 및 기능을 추상화하여 일반화시킨 것이다.
  • 기존에 만들어진 슈퍼 클래스를 재사용하여 서브 클래스를 쉽게 정의할 수 있고, 슈퍼 클래스를 통해 서브 클래스를 쉽게 이해할 수 있다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'방통대 컴퓨터과학과/3학년1학기' 카테고리의 다른 글
  • 데이터베이스 모델링
  • [운영체제] 프로세스 개요
  • [C언어] C 언어의 정의
  • 데이터베이스의 이해
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    RESTful
    egov
    QueryDSL
    운영체제
    프론트엔드
    자바스크립트
    Spring
    Java
    springboot
    JPA
    SpringBoot를 이용한 RESTful Web Service 개발
    토이프로젝트
    프로그래머스
    에러해결
    oracle
    인프런
    MSA
    코딩테스트
    react
    SQL
    전자정부프레임워크
    개발자
    방통대
    스프링부트
    알고리즘
    넥사크로
    IT
    기출문제
    토비의스프링부트
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
[Java] Java와 객체지향 프로그래밍
상단으로

티스토리툴바