추상화 / 상속 / 다형성 ?

> 개념설명 가능해야

 

상속은 실제 상위 클래스로부터 기능들을 다른 클래스로 물려주는 기법

 

다형성은 ~~

 

추상화는 앱스트랙트 추상메서드를 만들어서 실행되기 위한 메서드가 아닌 설계 목적의 메서드를 작성하는 기법

 

> 인터페이스 : 완전 추상체

 

 

 

추상클래스와 인터페이스의 차이?

 

추상 클래스는 기능의 확장(extends) 및 implements 가능하다.

 

추상클래스는 멤버, 추상메서드 상속시켜서 내용 구현 강제, 설계(20%)와 확장(80%) 목적

기능의 확장이 목적, 일부 기능을 채우는 것을 강제

 

인터페이스는 100% 설계 목적, 추상체만 가질 수 있다.

프로젝트 리드, 다형성 목적, call back패턴

기능의 확장 없이 설계 목적, 다형성 목적, call back패턴

 

인터페이스를 상속 받을 때에는 extends가 아니라 implements를 사용

implements는 한번에 여러개도 가능 (extends는 한번에 하나씩만)

public interface USB {
	
	public final int a = 10;//상수값만 만들 수 있음	public final
	
	public void func(); //추상화되어있음	abstract
}

접근제한자 4가지 순서

public > protected > package > private(자기 클래스 내부에서만 접근 가능)

 

자바에서 package는 클래스를 카테고리별로 분류한 폴더

컨벤션 - 3레벨로 나눈다 // 회사.팀or프로젝트명.분류

파일

 

package 접근제한자

접근제한자를 안쓰면 package 접근제한자 (=디폴트 접근제한자)

같은 패키지에서는 자유롭게 접근, 다른 패키지에서는 프라이빗

 

 

protected 접근제한자

기본적으로 같은 패키지 내의 접근만 가능

다른 패키지에 있는 상황인데 다른 패키지의 클래스에서 extends해서 상속을 받은경우 접근 가능

>다른 용도로 사용, 오버라이드 하도록 권유 (cf. 추상은 implement를 해야 쓸수 있도록 강제)

 

정보은닉을 하는 이유

클래스의 안전성

사용자의 편의성

 

캡슐화

반드시 사용해야 되는 부분만 외부에 노출시키는 방식

 

손코팅 

selection sort 선택정렬

https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html

 

[알고리즘] 선택 정렬(selection sort)이란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

Bubble sort 거품정렬

https://bowbowbow.tistory.com/10

 

Bubble Sort : 거품 정렬

Bubble Sort : 거품 정렬 Bubble Sort : 거품 정렬 Bubble Sort : 거품 정렬 소개 정렬과정 알고리즘 분석 애니매이션 예시 구현 정리 끝 소개 Bubble Sort 는 인접한 두 수를 비교하여 큰 수를 뒤로 보내는 간단..

bowbowbow.tistory.com


코드 짤때 중요한것

매서드

셋터 겟터

컬렉션

 

 


추상화란엇인가?

  • Abstract 추 매서드 만들어서 실제로행되는 코드가 아 설계 목적의 코드성하는 

 

상속이란엇인가?

  • 상위 클래스의능들을 클래스로 물려주는

 

다형성이란엇인가?

  • 변수 하나가 여러가지 자료형을 담을 있는 상태

 

추상클래스와 인터페이스의 차이

  • 상클래스는 메서드가 하나 이함되거나 abstract 정의 경우
  • 인터페이스는 메소드가 추 메소드
  • 추상클래스는 클래스를 상속 받아서능을 확장시키는 것이 목적(extends)
  • 인터페이스는 메소드현을 강제하는 것이 목적, (implements) 뒤에 여러개 가
  • 추상 클래스의 상속은 슈퍼클래스의능을용하거나 확장하기 위해서 사용되고중상속의 모호문에 하나 상속 받을 있다.
  • 인터페이스는 해당 인터페이스를 구현한 객체들에 대해서 동일한 동작을 약속하기 위해 존재

 

접근제한자 public < protected < package < private

 

package 접근제한자

  • 접근제한자를 안쓰면 package접근제한자, 디폴트 접근제한자 라고도 한다.
  • 같은 패키지에서는 자유롭게 접근, 다른 패키지에서는 프라이빗

 

protected 접근 제한자

  • 기본적으로 같은 패키지 내에서만 접근 가능
  • 다른 패키지에 있어도 상속받은 경우 접근 가능
  • 본래 용도 보다는 오버라이드(재정의) 하도록 권유하는 용도로 주로 쓰인다

 

정보 은닉을 하는 이유

  • 클래스의 안전성과 사용자의 편의성을 위해

 

캡슐화

  • 반드시 사용해야 되는 부분만 외부에 노출시키는 방식
  • 내부 데이터를 외부에 노출하지 않고 은닉
  • 유지보수성 향상
  • 외부에 불필요한 정보를 노출하지 않고 보호

 

선택 정렬 Selection Sort


public class Selection {

	public void sort(int[] data){
		int size = data.length;
		int min; //최소값을 가진 데이터의 인덱스 저장 변수
		int temp;

		for(int i=0; i<size-1; i++){ // size-1 : 마지막 요소는 자연스럽게 정렬됨
			min = i;
			for(int j=i+1; j<size; j++){
				if(data[min] > data[j]){
					min = j;
				}
			}

			temp = data[min];
			data[min] = data[i];
			data[i] = temp;

		}
	}

	public static void main(String[] args) {

		Selection selection = new Selection();

		int data[] = {66, 10, 1, 99, 5};

		selection.sort(data);

		for(int i=0; i<data.length; i++){
			System.out.println("data["+i+"] : " + data[i]);
		}

	}
}

 

 

 

 

버블 정렬 Bubble sort

public class Bubble {

    public void sort(int [] data){

        int temp = 0;
        for(int i=data.length-1; i>=0; i--){

            for(int j=0; j<i; j++){
                if(data[j] > data[j+1]){
                    temp = data[j];
                    data[j] = data[j+1];
                    data[j+1] = temp;
                }               

            }
        }
    }

    public static void main(String[] args) {

        Bubble bubble = new Bubble();

        int data[] = {66, 10, 1, 34, 5};

        bubble.sort(data);


        for(int i=0; i<data.length; i++){
            System.out.println("data["+i+"] : " + data[i]);
        }

    }
}

 

 

 

출처: https://hahahoho5915.tistory.com/6?category=653519 [넌 잘하고 있어]

+ Recent posts