2차 프로젝트를 위해 DB 멘토링을 받으면서 강사분이 객체지향에 대해 야무지게 설명을 해주셔서..
복습 겸 옮겨보고자 한다.
네이버 IT 용어사전 객체 검색 결과는 다음과 같다.
어렵긴 하지만...요약해보면 다음과 같다.
객체란?
개념적인 것들 (사람/동물/사물/주문/예약/감정....등등)을 의미한다.
고유한 속성을 가지고 있다.
타인이 알 수 있는 것.
사전에 등록된 명사.
고유한 속성이란게 애매모호하면 타인이 알 수 있는 것, 사전에 등록된 명사 둘만을 생각해도 좋다.
즉 "asdlkfjasdflkklsdfwe"는 객체가 될 수 없다. 타인도 모르고 사전에도 없기 때문에!
하지만, 속성과 기능이 포함된 객체를 표현하려면 다른 게 필요한데, 이럴때 Class를 사용한다.
클래스는 크게 두 가지로 나눌 수 있다.
사용자 정의 클래스(User Defined Class) vs 내장 클래스 (Built-In-Class)
이름과 나이를 가지는 학생이란 클래스를 만들어보면 다음과 같다.
public class Student // 클래스 이름
{
private String name; // 속성:Property:멤버필드
private int age;
public Student() // 생성자 :: 기본생성자
{
}
public Student(String name, int age) // 생성자 1
{
this.name = name;
this.age = age;
}
public void setName(String name) // 기능:메소드:멤버함수
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setAge(int age)
{
this.age = age;
}
public String getName()
{
return this.name;
}
}
이름과 나이 속성을 필드로 선언을 하고, 두 종류의 생성자를 호출한 모습이다.
생성자의 특징 : 클래스 명과 같은 이름을 가지고 반환타입이 없다.
처음 선언된 생성자에는 매개변수가 없는데, 이는 기본 생성자라고 해서 클래스가 생성될 때(인스턴스화)
자동으로 호출이 되며,
두 번째 생성자는 전달인자와 속성이 동일하기 때문에 자기 자신을 가르키는 this 키워드를 사용한 것이다.
//객체 인스턴스화 (메모리 할당)
Student s1 = new Student();
객체지향의 기초 요소 4가지
(1) 캡슐화(encapsulation) : 속성과 기능을 클래스 내부에 집어넣는 행위 (변수와 함수를 하나의 단위로 묶는 것.)
1.1정보은닉(information hiding) : private / protected / public (접근자 제한)
프로그램의 세부 구현을 외부로 드러나지 않도록 모듈 내부에 감추는 것.
(2) 상속(inheritance) : 클래스나 추상 클래스를 상속받는 행위
자식 클래스가 부모 클래스의 속성과 기능을 그대로 물려받는 것.
2.1 오버로딩 vs 오버라이딩
(3) 다형성(polymorphism) : poly = multi, numerous; morph = form
하나의 변수, 또는 함수가 상황에 따라 다른 의미로 해석될 수 있는 것을 의미한다.
(3.1) subtype polymorphism (서브타입 다형성) - 메소드 오버라이딩
(3.2) parametric polymorphism (매개변수 다형성) - 제네릭 메소드
(3.3) ad-hoc polymorphism (임시 다형성) - 함수 오버로딩
(3.4) coercion polymorphism (강제 다형성) - 묵시적(자동)/명시적(수동) 형변환
(4) 직렬화(Serializtion) : 네트워크 상에서 전송되는 코드를 바이트 코드 형태로 변환해서 전송의 효율성 높임.
(4.1) 역직렬화(Deserializtion) : 전송받은 바이트 코드를 다시 객체화 시키는 작업.
'학원 수업 관련 > Language' 카테고리의 다른 글
안드로이드의 엑티비티와 인텐트 (0) | 2022.01.23 |
---|