CS

·CS
시작은 Dependency( 의존관계 )로 출발한다. 대충 알고 있을 테니 간단히만 설명하면 ,B가 변했는데 그 변화가 A에게 영향을 줄 때 이를 Dependency가 있다고 하며, A가 B에 의존적이다 라고도 한다. 그럼 DI( Dependency Injection )는? 의존관계인 A,B간에 A에서 B를 직접 생성해서 사용하는게 아니라 , 외부에서 B를 생성해서 주입해준다는 것이다. 다음은 사용시 장점이다 의존성이 줄어든다. = 결합도가 낮아진다. 기존에는 직접 생성하는 부분 때문에 B를 수정할 때 A의 구현 자체를 수정해야 하지만 , 외부에서 주입하면 B를 수정해도 A의 구현 자체를 수정할 일이 없거나 줄어들게 된다. 의존성이 낮아지면 다른 데에다 사용해도 문제가 발생할 가능성이 낮아지니까 코드의 ..
·CS
어노테이션 ( @ ) 이란 주석이란 뜻을 가진 단어지만 , 자바에서는 소스코드에 '@'예약어를 추가해서 사용할 수 있는 메타 데이터의 일종이다. 그럼 메타데이터란? 애플리케이션이 처리해야 할 데이터가 아니라 , 컴파일 과정과 실행 과정에서 코드를 어떻게 처리해야 하는지를 알려주기 위한 추가정보다. 쉽게 말하면 데이터로 된 사용설명서? 같은 거다 어노테이션의 기능 컴파일시 : 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공 빌드시 : 소프트웨어 개발 환경이 빌드나 배포시 코드를 자동으로 생성할 수 있도록 정보 제공 실행시 : 런타임시에 특정 기능을 실행하도록 정보 제공 자바에서는 미리 정해져 있는 여러 어노테이션( 예를 들어 @Override )들이 있지만 개발자가 커스텀,생성해서 사용할 수도 있다.
·CS
오버라이드란 부모클래스에게 상속받은 메소드를 상황이나 요건에 맞게 변형해서 사용하는 것이다. 이해를 위한 비유 : 커피가 든 잔을 줬는데 홍차가 땡겨서 커피 버리고 홍차를 따라 마시는 것 @Override는 오버라이드 하는 함수의 형식을 상속받는 함수의 형식과 다르게 하거나 이름을 다르게 하는 등의 실수를 방지해준다. 하지만 방지해주는거지 필수는 아니다.다만 실수 안 할 자신이 있다고 해도 보고 이해하기 편한데 안 쓸 이유도 굳이 없는 것 같다. 아래 예시에서 @Override가 있는 hello 메소드의 경우 String 매개변수를 안 쓸 경우 "부모클래스에 이거랑 같은 형식의 메소드가 없습니다."라고 에러가 뜬다. ide에서 친절하게 바로 만들기를 추천해주기도 한다. @Override가 없는 hi 메소..
·CS
인터페이스란? 추상 메서드만을 가질 수 있고 구현메서드는 가질 수 없는 일종의 추상 클래스다. 이해를 위한 비유 : 교수님 과제와 같다. 교수님은 과제 주제(이름)만 던져주시지 뭘 채워주시지는 않는다. 채우는 건 학생(자식클래스)의 몫이다. 그래서 자식클래스들에게 함수의 기능을 강제적으로 전부 구현하게 하는데에 목적이 있다. 이때문에 다형성의 특징을 갖고 있다. 또한 추상화는 따로 구현을 해야 하는게 아니라 공통적인 속성과 기능을 정의하는 것이기 때문에 추상화를 할 때 편리하게 사용할 수 있다. 다만 일반 추상 클래스와 다르게 상속해 줄 기능이 구현된 메서드가 없기 때문에 상속성의 특징은 없는 것 같다. 캡슐화도 인터페이스는 추상메소드만 있기 때문에 힘들 것 같다... 참고로 자바는 클래스의 다중 상속을..
·CS
다형성이란 먼저 예를 들자면 지금의 나는 아들이자 친구이자 학생인 것처럼 같은 이름을 하고 있지만 상황이나 맥락 등 여러 요건에 따라 다른 역할을 수행할 수 있는 특성이다. 대표적으로는 메소드 오버라이딩과 메소드 오버로딩이 있다. public interface Phone { public abstract void TurnOff(); public abstract void TurnOn(); // 폰마다 벨소리는 다를 수 있다. public abstract void Call(); } public class AndroidPhone implements Phone{ //안드로이드 폰 벨소리 @Override public void Call(){ System.out.println("빰~ 빠밤 빰~ 빰 바빰 빰 밤"); ..
·CS
캡슐화란 클래스가 쉽게 손상되거나 변형되지 못하게 내부를 보호,은닉하는 것이다. 하지만 외부와의 접속을 위해 몇 부분만 공개 노출할 수도 있다. 캡슐화 방법은 크게 2가지가 있다. 접근 제어자를 사용하는 방법 private (클래스 내에서만 접근 가능) dafult (같은 패키지 내에서만 접근 가능) protected (같은 패키지 + 다른 패키지의 하위클래스에서 접근가능) public (어디든 접근 가능) 접두어 get/set을 붙인 메소드를 사용하는 방법 public class AndroidPhone{ // 접근을 허용 안하는 멤버변수 private String color; // 외부에 접근을 허용할 멤버변수 private String model; // public으로 열려있는 get/set메소드를 ..
·CS
상속성(inheritance)이란 기존에 있던 클래스에 살을 붙이거나 변형,확장(extends)해서 새로운 클래스를 만드는 자바의 문법요소를 뜻한다. 이때 기존에 있던 클래스를 ( 상위,부모,super ) 클래스 ,새로운 클래스를 ( 하위,자식,sub ) 클래스라고 한다. 추상화를 통해 묶은 공통점들이 보통 부모로 많이 쓰인다. // 부모 클래스 public class Phone { String model; String company; void Call(){ System.out.println("신호가 가는 중 입니다."); }; void TurnOff(){ System.out.println("전원을 종료합니다."); }; void TurnOn(){ System.out.println("전원을 켭니다.");..
·CS
일단 추상이 뭔지에서 시작하자 추상이란 "여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용." by 국어사전 이걸 바탕으로 한 추상화에 대한 나의 해석 "간소화하고 공통점으로 묶어서 정리하는 것" // 간단한 예시 // 세상 모든 전화기는 적어도 전화를 걸고 전원을 키고 끌 수 있다. public interface Phone { public abstract void Call(); public abstract void TurnOff(); public abstract void TurnOn(); }
forrest13
'CS' 카테고리의 글 목록 (3 Page)