본문 바로가기
프로그래밍 언어/Java

Java) 1. Java 와 객체지향 프로그래밍

by nomfang 2021. 3. 3.
728x90
반응형

1-1 Java 언어와 Java 프로그램

Java언어의 기원

  • 1990년 Sun Microsystems의 제임스 고슬링 Oak 언어 개발 -> 후에 자바로
  • 1995년 Java와 Hot Java 발표
    웹의 확산과 함께 주목을 받음
  • 1996년 JDK 1.0
    1998년 Java2 SDK, SE 1.2 (1.2부터 Java2라고 부른다)
    2014 JDK SE8
    2020 Java SE15
  • 2009년 Oracle이 Sun을 인수했다

Java 언어의 특징

  • C/C++ 언어와 유사하나 단순함
  • 플랫폼에 독립적 (JVM으로 운영체제에 독립적)
  • 완전한 객체지향 언어 (C++은 하이브리드)
  • 웹 또는 네트워크 프로그래밍 용이
  • 엄격한 자료형 검사
  • 예외 처리 기능
  • 멀티 스레딩 지원

Java 프로그램의 실행

자바 소스 파일 (.java) - 컴파일러 - 자바 바이트 코드 (.class) - Java Virtual Machine

자바는 완전한 객체 지향 언어로 자바 소스코드를 작성하는 것은 클래스를 작성하는 것과 같다

  • 바이트 코드
    : 클래스 파일이라고도 한다. Java소스를 컴파일한 결과물
    : write once, run anywhere

애플리케이션과 애플릿

: 자바 프로그램은 실행 방식에 따라 애플리케이션과 애플릿으로 나눌 수 있다

애플리케이션

  • 플랫폼에서 실행되는 프로그램, 실행을 위해 main() 함수가 필요하다

애플릿

  • HTML 웹페이지에 포함되어 웹 브라우저를 통해 실행 (브라우저에서 사용되는, 요즘에는 사용하지 않는다)

Java 플랫폼

플랫폼

  • 프로그램의 실행을 위한 하드웨어, 소프트웨어 환경
  • 자바 플랫폼은 자바 프로그램의 개발과 실행을 위한 환경
  • 운영체제에 맞는 자바 플랫폼을 설치해야함

Java 플랫폼의 구성

Java VM

  • Java프로그램 실행 환경을 제공하는 가상 기계
  • Java프로그램의 구동 엔진
  • 실행에 필요한 사항을 관리
  • 메모리 정리를 자동으로 실행 (가비지 컬렉션)

Java API

  • 프로그램의 개발에 필요한 클래스 라이브러리 (C언어의 라이브러리는 함수 단위, 자바는 클래스 단위)
  • 패키지(클래스의 묶음)들이 계층 구조로 분류되어 있음

주석

  • /* */ : 여러줄 주석
  • // : 이후 내용을 주석
  • /** */ : javadoc을 이용한 API문서 만들기

클래스의 정의

  • public class는 파일에 최대 1개, 파일 이름은 '퍼블릭클래스 이름.java'
  • main() 메소드 : public static void main(String[] args){ } (반드시 외워야함)

출력

  • System.out.print() (print는 메소드 , System 클래스 안의 필드 out의 메소드를 사용하여 출력한다)

실행

  • 프로그램 작성 : .java 확장자로 저장
  • 컴파일 명령 : > javac 클래스이름.java
  • 실행 명령 : java 클래스이름 -> 클래스 내의 main() 메소드 실행된다

객채지향 프로그래밍

클래스와 객체

추상화

  • 구체적인 모든 사실이 아니라 전형적이고 필요한 부분만으로 사물을 이해하고 표현하는 것

클래스

  • 클래스는 객체를 만들기위한 모형(틀)
  • 공통적인 특징을 가지는 객체들을 추상화하기 위한 수단
  • 객체의 상태는 필드(데이터)로 , 행위는 메소드로 구현됨
  • 객체는 특성 클래스의 인스턴스
  • car 클래스 -> 모든 자동차
  • car 객체 -> 특정 자동차
  • 인스턴스 -> 클래스가 실체화된 것

Java프로그램

  • 클래스가 프로그램 구성의 기본 단위
  • 데이터(필드)와 알고리즘(메소드)이 클래스에 캡슐화 되어있음
  • 클래스 정의로부터 객체 생성, 객체 간의 상호작용으로 프로그램 동작

절차적 프로그램 -> 구성 기본 단위가 함수
객체 지향 프로그램 -> 구성 기본 단위가 클래스

객체지향은 DB의 정규화와 유사한 것 같음
반응형

댓글