OOP - 다형성과 추상 타입
2022. 2. 14. 01:22
OOP
📌 상속이란? 상속(Inheritance) 은 한 타입을 그대로 사용하면서 구현을 추가할 수 있도록 해주는 방법을 제공한다. 상속 받은 하위 클래스는 필요에 따라 상위 클래스에 정의된 메서드를 새롭게 구현할 수 있다. 이를 재정의(overriding)라 한다. 메서드를 재정의하면, 해당 메서드를 실행할 때 상위 타입의 메서드가 아닌 하위 타입에서 재정의한 메서드가 실행된다. 상속의 장점 기존에 작성된 클래스를 재활용 할 수 있다. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성해 놓으면, 자식 클래스에서는 해당 멤버를 작성하지 않아도 된다. 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련한다. 상속의 종류 1. 인터페이스 상속 다중 상속을 지원하지 않는 언어에서 다형성을..
OOP - 객체 지향
2022. 2. 4. 16:41
OOP
📌 객체 지향 소프트웨어의 가치 소프트웨어의 가치는 사용자가 요구하는 기능을 올바르게 제공하는 데 있다. 요구 사항은 언제나 변한다. 시간이 흐름에 따라 이전에 필요 없다고 생각했던 기능이 필요해질 수도 있고, 기존에 구현된 기능의 일부를 변경해야 할 수도 있다. 요구 사항이 바뀔 때, 그 변화를 더 수월하게 적용할 수 있는 장점을 얻기 위해 사용된 것이 바로 객체 지향 기법이다. 객체 지향 기법을 적용하면 소프트웨어를 더 쉽게 변경할 수 있는 유연함을 얻을 수 있다. 📌 절차 지향 절차 지향의 '절차' 의 의미는 Procedual 즉 함수를 의미한다. 절차적 프로그래밍이란 단순히 순차적인 명령 수행이 아니라 루틴, 서브루틴, 메소드, 함수 등(이를 통틀어 프로시저라고 한다.)을 이용한 프로그래밍 패러다..
JVM 메모리 구조
2022. 1. 19. 22:00
CS
Java는 .java 파일을 javac 컴파일러를 통해 .class 바이트코드로 컴파일한 후, 클래스 로더에 의해 .class 파일을 JVM 위의 Runtime Data Area에 올려서 실행시키기에 OS 독립적으로 개발할 수 있다. 📌 JVM의 동작 방식 및 순서 1. 프로그램 실행 시 JVM은 OS로부터 메모리를 할당 받는다. 2. 자바 컴파일러(javac)가 자바 소스코드(.java)를 자바 바이트코드(.class)로 컴파일한다. 3. Class Loader를 통해 JVM Runtime Data Area로 로딩된다. 4. 로더에 의하여 로딩 된 .class들은 Execution Engine을 통해 Interpret(해석)된다. 5. 해석된 바이트 코드는 Runtime Data Area의 각 영역에 ..
[코틀린] 프로그래머스 64061(크레인 인형뽑기 게임)
2022. 1. 19. 19:01
Algorithm
📌 풀이 스택을 이용해서 풀었다. 스택이란 책 쌓기를 생각하면 된다. 가장 먼저 들어온 것이 가장 아래 쌓이고 가장 늦게 들어온 것이 가장 위에 쌓여 pop 즉 빼낼 때 가장 먼저 나가게 되는 Last In First Out(LIFO) 형태이다. 2차원 배열에서 하나씩 내려가면서 나오는 인형과 stack에 있는 인형을 비교해 만약 같다면 즉 (stack.peek() == board[i][it - 1])이라면 answer를 2개 늘려주고 stack의 인형을 pop 시켜주고 배열에서의 인형도 0 즉 인형을 없애준다. 풀이 코드 import java.util.* class Solution { fun solution(board: Array, moves: IntArray): Int { var answer = 0 ..
[파이썬] 프로그래머스 64061(크레인 인형뽑기 게임)
2022. 1. 19. 18:55
Algorithm
📌 풀이 스택을 이용해서 풀었다. 스택이란 책 쌓기를 생각하면 된다. 가장 먼저 들어온 것이 가장 아래 쌓이고 가장 늦게 들어온 것이 가장 위에 쌓여 pop 즉 빼낼 때 가장 먼저 나가게 되는 Last In First Out(LIFO) 형태이다. 2차원 배열을 활용하여 윗줄부터 move 즉 뽑기 기계의 위치에서 하나씩 내려가며 0이 아닌 즉 인형이 있을 때 basket 안에 차례차례 인형을 넣고 2개의 인형이 중복된다면 del basket [-2], del basket [-1]을 통해 마지막 2개를 지워주고 answer를 2개 늘려준다. 풀이 코드 def solution(board, moves): basket = [] answer = 0 for move in moves: for column in boar..