2021-06-11 강의록_OOP

MIN.DI·2021년 6월 11일
0

강의록

목록 보기
4/54

Programming Paradigm

C : 모든 게 함수(function)로 이루어짐

  • OOP : Object - Oriented Programming
  • DDP : Data - Driven Programming
  • EDP : Event - Driven Programming
  • AOP : Aspect - Oriented Programming

OOP

부품객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램 만들기.

Object(객체)란?

물리적으로 존재하는 것.
추상적인 것(회사, 날짜) 중에서 자신의 속성과 동작을 가지는 모든 것.
객체는 필드(속성)과 메소드(동작)로 구성된 자바 객체로 모델링 가능.

모델링 단계 이전까지 속성, 행위(=기능)이지만,
이것이 프로그래밍 언어를 통해 프로그래밍 되었을 때 필드(속성)와 메소드(동작)가 됨. >> 객체 모델링

필드

  1. 고유속성
  2. 시간에 따라 변하는 상태
  3. 부품관계에 있는 다른 객체

객체간의 관계

  • 집합 관계 : 완성품과 부품의 관계 ** OOP의 핵심
  • 사용 관계 : 객레가 다른 객체를 사용하는 관계
  • 상속 관계 : 종류 객체와 구체적인 사물 객체 관계

OOP의 특징

  • 캡슐화
  • 상속
  • 다형성

캡슐화 Encaptulation

  • 개게의 필드, 메소드를 하나로 묶고, 실제 구현 내용은 감춘다.
  • 외부 객체는 객체 내부 구조를 알지 못하며, 객체가 노출해 제공하는 메소드만 이용 가능.
  • 필드와 메소드를 캡슐화하여 보호하는 이유는, 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위함. (객체 내부의 무결성 유지)
    무결성 = 일관성 + 정확성
  • java에서는 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지 결정하는 접근제한자(Access Modifier) 사용

상속 Inheritance

  • 상속이 없이는 다형성Polymorphism 을 구현할 수 없다!
    다형성의 전제조건(필수조건) 임!!

다형성 Polymorphism

  • 부모객체(동물 - sound메소드) 를 상속받는,
    자식객체 (강아지, 고양이)가 부모의 메소드를 상속받았을 때(전제조건)
    자식객체의 sound가 각각 다르게 결과가 나온다.
    즉, "다"양한 "형"태로 결과가 나온다! >> 다형성
  • 부모 타입(상위 객체. LValue)에는 모든 자식 객체(하위 객체. RValue)가 대입될 수 있다. // 다형성 1
    (부모가 자식을 품으면 자식이 보이지 않는다)
  • 인터페이스 타입에는 모든 구현 객체가 대입
  • 객체를 부품화시킬 수 있다. (OOP의 핵심)
  • 유지보수성

객체Object와 클래스Class

  • 현실세계 : 설계도 - > 객체
    자바 : 클래스 -> 객체
    클래스는 '붕어빵 틀', 객체는 '붕어빵' 이라고 생각.
    클래스에는 객체를 생성하기 위한 필드, 메소드가 정의되어 있다.
    클래스로부터 만들어진 객체를 해당 클래스의 인스턴스 라고 함. (Object는 더 결과적인 개념. 클래스를 언급하지 않고 객체를 언급할 때)
    하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있음.
public class Car {			//main 메소드 없음. >>라이브러리 클래스!
	String company = "현대자동차";	//필드
	String model = "그랜저";
	String color = "검정";
	
	int maxSpeed = 350;
	int speed;
	
} //end class

클래스 블록 내에서 선언된 변수는 '필드' 라고 한다. >>변수 정의가 아니다!
클래스는 아직 '설계도', '붕어빵 틀' 상태이다. 이 안에 존재하는 필드나 메소드는 아직 실체가 없음.
실행클래스(main()메소드 존재) new연산자로 객체를 생성했을 때 비로소 실체가 생긴다.

profile
내가 보려고 쓰는 블로그

0개의 댓글