객체는 관련된 데이터와 함수(일반적으로 여러 데이터와 함수로 이루어지는데, 객체 안에 있을 때는 보통 프로퍼티와 메소드라고 한다)
멤버 변수와 메서드를 가지는 객체를 만들기 위한 확장이 가능한 코드 양식
객체를 찍어내기 위한 틀, 설계도
설계도인 클래스를 바탕으로 실체화되어 메모리에 할당된 실체
객체는 소프트웨어에서 구현할 대상, 설계도에 따라 소프트웨어 세계에 구현된 실체가 인스턴스
예시)
// 클래스 정의
class Dog {
// 속성(변수)
String name;
int age;
// 메서드(함수)
void bark() {
System.out.println("멍멍!");
}
}
// 클래스의 인스턴스(객체) 생성
Dog myDog = new Dog();
// 객체의 속성 설정
myDog.name = "뽀송이";
myDog.age = 2;
// 객체의 메서드 호출
myDog.bark(); // 출력: 멍멍!
여기서 Dog 클래스는 개를 나타내는 클래스입니다. myDog는 Dog 클래스를 기반으로 만들어진 객체(인스턴스)로, 객체 내에는 name과 age라는 변수가 있고, bark라는 메서드가 있습니다. 이런 식으로 클래스는 객체를 만들기 위한 템플릿 역할을 하며, 객체는 그 템플릿을 기반으로 특정 데이터와 기능을 가집니다. 이런 개념이 객체지향 프로그래밍의 중요한 부분입니다.
많은 객체(Object)들이 모여서 상호 협력하면서 데이터를 처리하는 방식의 프로그래밍 설계방법
객체지향 프로그래밍을 지원하는 언어로는 C++, C#, Java, Python, JavaScript, Ruby, Swift 등 있다.
객제치향 프로그램은 크게 네가지 특성이 있다. 추상화, 캡슐화, 상속, 다형성
추상화란 미술에서 사실적으로 그리는 것이 아닌 점, 선, 색채 등의 단순하게 표현하는 것이다.
컴퓨터 과학에서 추상화란 복잡한 자료, 모듈, 시스템 등으로부터 핵심적은 개념 또는 기능을 간추려 내는 것
클래스들의 중요하고 공통된 성질들을 추출하여 부모 클래스를 선정하는 개념과, 이벤트 발생의 정확한 절차나 방법을 정의하지 않고 대표할 수 있는 표현으로 대체하는 것
객체의 관련 속성만 '표시' - 데이터 추상화
불필요한 세부 정보는 '숨긴다' - 제어 추상화
메소드의 작동방식과 같은 내부 로직을 숨기는 것
추상화한 코드 main()에서

내부 코드

사용자는 메서드로 값을 주고 받기만 하기 때문에 추상화되었다고 한다.
간단한 개념으로 일반화하는 과정
공통 특징인 도형으로 묶어 이름을 붙이는 것 갤럭시폰=>휴대폰=>통신기기=>전자제품 순으로 추상화를 시킬 수 있다.

예시
// 동물 클래스 정의
class Animal {
void sound() {
System.out.println("동물 소리를 내다.");
}
}
// 강아지 클래스 정의, 동물 클래스를 상속받음
class Dog extends Animal {
// 강아지만의 추가적인 특징이나 기능을 정의할 수 있음
void bark() {
System.out.println("멍멍!");
}
}
// 객체 생성
Dog myDog = new Dog();
// '동물' 클래스의 메서드 사용
myDog.sound(); // 출력: 동물 소리를 내다.
// '강아지' 클래스의 메서드 사용
myDog.bark(); // 출력: 멍멍!
동물 클래스를 저의한 것을 강아지 클래스가 상속을 받아서 강아지가 동물 클래스에서 정의된 sound()를 사용할 수 있다.
하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석 될 수 있는 것
어떠한 요소에 여러 개념을 넣어 놓는 것
하나의 클래스 내부에 같은 이름의 행위를 여러개 저으이하거나 상의 클래스의 행위를 하위 클래스에서 재정의하여 사용할 수 있기 때문에 다형성 특징을 갖는다
객체 지향적 설계를위해 다섯 가지 원칙이 있다. 앞자리만 따서 SOLID라한다.
단일 책임 원칙(SRP, Single Responsibility Principle)
개방-폐쇄 원칙(OCP, Open/Closed principle)
리스코프 치환 원칙(LSP, Liskov Substitution Principle)
인터페이스 분리 원칙(ISP, Interface Segregation Principle)
의존관계 역전 원칙(DIP, Dependency Inversion Principle)
참조