본문 바로가기

728x90

전체 글

(326)
오버로딩(Overloading) vs 오버라이딩(Overriding) /* - **오버로딩(Overloading - 과적)** - 조상 클래스에서 상속받은 메서드에서 파라미터를 변경하여 **새로운 메서드**를 정의하는 것 - **오버라이딩(Overriding - 덮어쓰기)** - 조상 클래스에서 상속받은 메서드의 내용을 **자식 클래스의 상황에 맞게 변경**해서 정의하는 것 - 같은 입금이라고 하더라도 내용물이 다르기 때문에 메서드의 내용도 달라야 합니다. **조상클래스의 기존 메서드** 의 기존 내용을 수정하는 개념으로 보시면 됩니다. 주의할 점은 오버로딩된 메서드와 다르게 부모 클래스의 파라미터 설정을 그대로 따릅니다. */
11. 17 객체 지향 프로그래밍 강의/ JAVA/ 알고리즘 강의 1. 객체 지향 프로그래밍 강의 핵심 메세지: 발생 수익보다 투입 비용이 더 들어가는 소프트웨어는 가치가 없다. 이를 개선하기 위한 노력들: 캡슐화, 다형성 그리고 왜 이러한 노력을 하는 지 이해하기 접근 제어자는 캡슐화가 가능하도록 하는 도구다. Interger vs int : 래퍼클래스 Boolean vs boolean : 래퍼클래스 캡슐화: 캡슐(클래스) 안에 모여있는 코드만 수정하면, 그 캡슐을 호출하여 사용하는 곳을 일일히 수정할 필요 없다. ~ 비용절감 Protected + JPA 인터페이스 : 구현하려는 객체가 가지고 있는 동작의 명세 (실무) 추상 클래스는 부모-자식클래스가 정말 확실한 경우에 사용 ~ 실사용도가 비교적 낮다 비용절감의 관점에서, 다형성 또한 추가비용의 투입이 없이 교체, ..
11. 16 JAVA 기초 강의: 제너릭스/ 람다/ 스트림API/ 네트워킹 1. 제너릭스 ~ Generic: 데이터의 타입을 일반화한다 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시 타입 체크 동작은 같지만 타입이 달라지는 경우에 유용하게 사용할 수 있다. ->장점 1. 객체 타입을 컴파일 시 체크하기 때문에 안정성이 높아진다 2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. 클래스나 메소드에서 사용할 내부 테이터 타입을 컴파일 시 미리 지정하는 방법 *제너릭스를 사용하지 않으면 제너릭 클래스 안에 있는 객체를 꺼낼 때마다 형변환을 해줘야 한다. *제너릭 타입이 조상클래스와 자손클래스로 다르게 입력되어서는 안된다. ArrayList list = new ArrayList(); ArrayList list = new ArrayList(..
11. 16 알고리즘 TIME ATTACK 풀이/ JAVA 기초 강좌 1. 알고리즘 타임어택 풀이 풀이 후 QnA 시간: 코테 시 제한사항 필수 확인 숫자 단위 표현 : _ ex) 300_000 = 300,000 -> 가독성 목적 코드 작성: 프로그램에서 먼저 하고 코테 사이트에 옮기는 센스 long longType = Integer.MAX_VALUE + 1L; // 형변환 *파이썬보다 자바의 실수, 정수 범위가 작다 자바에서는 데이터의 손실이 발생하지 않거나, 데이터의 손실이 최소화되는 방향으로 묵시적 타입변환을 진행 자동 형변환 : 데이터 크기가 더 큰 데이터 타입으로 (JAVA) 0.00 ~ 자동 더블인식/ 숫자는 자동 float인식 while은 끝을 알지 못할 때 쓴다(for는 범위를 알고 있을때) String은 왜 배열처럼 쓸수 있는지?? for문, 슬라이싱, 인..
11. 15 JAVA 기초 강의/ 알고리즘 강의 + 그림으로 배우는 알고리즘 1. JAVA 기초 강의 인터페이스, 상속을 활용한 클래스 구현 public class Main { public static void main(String[] args) { Human grandParent = new GrandParent("할아버지", 70); Human parent = new Parent("엄마", 50); Human child = new Child("나", 20); Human[] humans = {grandParent, parent, child}; for (Human human : humans) { System.out.println(human.name + ", 나이:" + human.age + ", 속도" + human.speed + ", 장소" + human.getLocation()..
문제해결 연습(1): 알고리즘과 친해지기 w.파이썬 이중 반복문을 활용한 최대값 찾기 함수 def find_max_num(array): for num in array: #배열의 숫자를 하나 하나 꺼내서 num에 할당 후 for compare_num in array: #이중 반복문, 배열에서 compare_num에 할당 if num < compare_num: break #아직 작은 수일 경우 반복문을 끝내고 다음 배열을 num에 할당한다 else: return num #for 반복문이 완성될 동안 break가 일어나지 않았다면 result = find_max_num(input) print(result) 매우 간단한 함수지만, 지금 완전히 이해한 기분과 함께.. 성취감을 느껴 기록합니다. 소감: 반복하다 보니 일주일이라는 짧은 시간에도 확실히 익숙해진 느낌이..
11. 14 알고리즘 강의/ JAVA 기초 강의/ 그림으로 배우는 알고리즘/ Leetcode 1. 알고리즘 강의 Dynamic Programming(동적 계획법) 1) 피보나치 수열: 첫째, 둘째항이 1이며 그 뒤의 모든 항은 앞의 두 수의 합 표시되는 수열 *피보나치 수열 구현 : 재귀함수 input = 20 def fibo_recursion(n): if n == 1 or n == 2: return 1 return fibo_recursion(n - 1) + fibo_recursion(n - 2) print(fibo_recursion(input)) # 6765 #내가 쓰기엔 매우 간단해 보이지만, 동적 계획법: 복잡한 문제를 간단한 여러 문제로 나누어 푸는 것 조건 1. 반복되는 형태로 문제가 계속해서 파생되는 게 있다. 조건 2. 메모이제이션을 위한 메모가 필요하다 input = 100 # m..
11.14 알고리즘 강의: 그래프/ DFS && BFS 1. 그래프 : 연결되어 있는 정점과 정점 간의 관계를 표현할 수 있는 자료구조 노드(Node): 연결 관계를 가진 각 데이터를 의미한다. 정점(Vertex)이라고도 한다. 간선(Edge): 노드 간의 관계를 표시한 선. 인접 노드(Adjacent Node): 간선으로 직접 연결된 노드(또는 정점) 종류 - 유 방향 그래프: 일방통행 그래프, 각 간선은 한 방향으로만 진행할 수 있다 - 무 방향 그래프: 방향이 없는 그래프 표현 방법 ~ 여기서도 배열/링크드 리스트 인접 행렬(Adjacency Matrix): 2차원 배열로 그래프의 연결관계를 표현 인접 리스트(Adjacency List): 링크드 리스트로 그래프의 연결관계를 표현 *인접 행렬은 시간이 더 효율적이다 and 인접 리스트는 공간이 더 효율적..

728x90