WIL(2023.2.20-2023.2.26)

jooyeongmee·2023년 2월 27일
0

TIL2023/2

목록 보기
8/8

항해 3주차가 끝났다. 이번 주에는 자바 객체지향을 위주로 배웠다.

객체지향 프로그래밍이란?

우리가 실생활에서 쓰는 모든 것들을 하나의 객체로 바라본다. 프로그램 구현에 필요한 객체를 파악하고 그 객체들의 역할이 뭔지, 각각의 객체는 어떤 책임을 져야하는(어떤 기능을 수행하는) 객체인지를 파악한다. 그리고 그런 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 객체지향 프로그래밍이라고 한다.

클래스와 객체

클래스는 객체를 만들기 위한 하나의 설계도이다.
객체는 설계도에 따라 태어난 실체이다. 객체를 클래스의 인스턴스라고도 한다.

절차지향과 객체지향

절차지향은 프로그램을 기능중심으로 바라보며 어느 기능을 어떤 순서로 처리하는가에 초점을 맞춘다.
반면에, 객체지향은 객체중심이며 누가 어떤 일을 할 것인가에 초점을 둔다.

대형 프로그래밍의 경우 많은 기능을 수반하기에 객체지향이 적합하고 소형 프로그래밍의 경우 절차지향이 적합하다.

객체지향 프로그래밍의 특징

  1. 추상화(abstraction)
  2. 캡슐화(encapsulation)
  3. 상속성(inheritance)
  4. 다형성(polymorphism)

추상화(abstraction)

객체들의 고통적인 특징(기능, 속성)을 모아서 한데 묶는 것
객체지향적인 관점에서는 클래스를 정의하는 것도 추상화라고 할 수 있다.(자바스크립트 같은 클래스가 없는 객체지향언어도 존재하기 때문)

캡슐화(encapsulation)

실제로 구현되는 부분을 외부에 드러나지 않도록 정보를 은닉하는 것.
객체가 독립적으로 역할을 할 수 있도록 데이터와 기능을 하나로 묶어 관리한다.
외부와 상호작용을 할 때에는 메소드를 이용하여 한다.

상속성(inheritance)

하나의 클래스가 가진 특징(함수, 데이터)을 다른 클래스가 그대로 물려받는 것
기존 코드를 재활용해서 사용함으로써 객체지향의 중요한 기능 중 하나에 속한다.

다형성(polymorphism)

약간 다른 방법으로 동작하는 함수를 동일한 이름으로 호출하는 것
동일한 명령의 해석을 연결된 객체에 의존하는 것(파라미터를 상위 클래스 타입으로 받는다)

  • 오버라이딩 & 오버로딩
    오버라이딩(overriding):
    부모클래스의 메소드와 같은 이름, 같은 매개변수를 쓰는데 내용이 다른 것(덮어씌움)
    안 덮어쓰려면 부모클래스의 메소드를 super.<함수이름>()으로 호출하고 코드 작성.
    오버로딩(overloading):
    같은 이름의 함수를 매개변수의 개수, 타입 순서만 다르게하는 것.

JVM

JVM은 자바 프로그래밍이 실행되는 가상머신이다.

자바의 실행과정

  1. 개발자가 .java 소스파일을 작성한다.
  2. JDK가 제공하는 javac 컴파일러를 사용하여 소스파일을 컴파일한다.
  3. JVM의 Class Loader는 컴파일로 생성된 바이트 코드(.class)를 전달 받아 동적 로딩을 통해 실행에 필요한 클래스들을 로딩하여 JVM 내부 Runtime Data Area에 로드한다.
  4. JVM의 Execution에 의해 기계어로 해석되어 실행된다.
profile
부지런하면서도 게으른 공순이

0개의 댓글