Language 23

[Language] SOLID

SRP 단일 책임 원칙 Single responsibility principle 한 클래스에는 하나의 책임만 가져야 한다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것 OCP 개방-폐쇄 원칙 Open/closed principle 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요하다. LSP 리스코프 치환 원칙 Liskov substitution principle 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것 다형성을 지원하기 위한 원칙, 인터페이스를 구현한 구현체를 믿고 사용하려면,..

Language 2023.03.13

[Language] 절차지향과 객체지향

절차지향 (Procedural Programming) 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 프로그래밍 방법 데이터와 기능(함수)으로 나누어서 기능의 목록을 절차적으로 수행 장점 초기 프로그래밍 언어로, 컴퓨터와 처리구조가 비슷해 실행 속도가 빠르다. 적은 개발 비용 및 시간 단점 유지보수의 어려움 - 디버깅이 어려움 모든 구성 요소가 유기적으로 연결되어 있다는 것은, 하나가 고장 났을 때 시스템 전체가 고장난다는 의미이다. 문제를 해결하기 위해 일부분이 아닌 시스템 전체를 수리해야한다. 엄격하게 순서가 정해져 있어 비효율적 실행 순서가 정해져 있어 코드의 순서가 바뀌면 결과가 달라질 가능성이 높다. 즉, 언어의 융통성이 부족하여 생산 효율이 떨어진다. 과도한 전역변수 사용 모든 함수에..

Language 2023.03.13

ASCII Code (아스키 코드)

컴퓨터는 0과 1 숫자 밖에 모르기 때문에 문자도 숫자로 기억한다. 인코딩 방식에 따라 어떤 숫자와 어떤 문자를 대응시키는가가 다르다. 통상적으로 아스키 코드 방식을 많이 사용한다. // 알파벳 대문자 'A': 65 ~ 'Z': 90, 소문자 'a': 97 ~ 'z': 122 대소문자 차이는 32 -> 소문자 - 32 = 대문자 // 숫자 '0' : 48 ~ '9': 57 // int 와 char 연산할 때는 char는 숫자(아스키 번호)로 연산함 public int solution(String str){ int answer = 0; for(char x : str.toCharArray()){ if( x >= '0' && x = 48 && x

Language 2023.01.22

[Java] 객체지향 프로그래밍2 (다형성, 추상클래스, 인터페이스)

다형성 다형성: 여러가지 형태를 가질 수 있는 능력 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현 조상 클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있다. 참조 변수가 가리킬 수 있는 멤버변수만 사용이 가능하다. 참조 변수의 타입이 참조변수가 참조하고 있는 인스턴스에서 사용할 수 있는 멤버의 개수를 결정한다. 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있다. 반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수 없다. 참조변수의 형변환 자손타입의 참조변수를 조상타입의 참조변수로, 조상타입의 참조변수를 자손타입의 참조변수로의 형변환만 가능하다. 형변환은 참조변수의 타입을 변환하는 것이지 인스턴스를 변환하는 것은 아..

Language/Java 2022.12.28

[Java] 객체지향 프로그래밍2 (상속, 오버라이딩, package, 제어자)

상속 정의 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 - 자손 클래스의 인스턴스를 생성하면 조상 클래스의 멤버와 자손 클래스의 멤버가 합쳐진 하나의 인스턴스로 생성된다. - 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다. - 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다. 장점 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. Ex. class Parent {} class Child extends Parent {} class Child2 extends Parent {} Child, Child2 클래스에 공통적으로 추가되어야 하는 멤버가 있다면, 두 클래스에 각각 따로 추가해주는 것보..

Language/Java 2022.12.24

[Java] 객체지향 프로그래밍1

객체지향 언어 객체지향 이론의 기본 개념 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다. 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상 세계를 구현하고 이 가상세계에서 모의실험을 함으로써 많은 시간과 비용을 절약할 수 있다. 객체지향 언어의 주요 특징 1. 코드의 재사용성이 높다. 2. 코드의 관리가 용이하다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. 클래스와 객체 클래스: 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메서드로 정의한 것으로 객체를 만들기 위한 메타정보 객체: 클래스에서 정의한 것을 토대로 실제 메모리에 ..

Language/Java 2022.12.14

[Java] JVM, JRE, JDK 간단 정리

✅ JVM Java virtual machine : 자바를 실행하기 위한 가상 컴퓨터 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻 자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에, 자바 애플리케이션을 실행하기 위해서는 반드시 JVM이 필요 일반 애플리케이션은 OS에 종속적 → 애플리케이션을 다른 OS에서 실행시키기 위해서는 그 OS에 맞게 애플리케이션을 변경해야함 Java 애플리케이션은 JVM 하고만 상호작용하기 때문에 OS와 하드웨어에 독립적 → 다른 OS 에서도 프로그램의 변경없이 실행이 가능 단 JVM은 OS에 종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요 썬에서는 일반적으로 많이 사용되는 주요 OS용 JVM을 제공한다. ✅ JRE Java Runtime..

Language/Java 2022.11.13

[Java] 자바란? 자바언어의 특징

✅ 자바란? 썬 마이크로시스템즈에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어 운영체제에 독립적이다. 운영체제에 종류에 관계없이 실행이 가능하기 때문에, 운영체제에 따라 프로그램을 전혀 변경하지 않고도 실행이 가능하다. 다양한 기종의 컴퓨터와 운영체제가 공존하는 인터넷 환경에 적합한 언어 객체지향개념의 기존 언어 C++의 장점을 채택하는 동시에 잘 사용되지 않는 부분은 제외시킴으로써 C++보다 배우기 쉽다. 풍부한 클래스 라이브러리를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공한다. ✅ 자바 언어의 특징 📌 운영체제에 독립적 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도..

Language/Java 2022.11.13

[Python] csv파일 data들 MySQL table에 insert 하기 - pymysql, csv

MySQL create database dictionary default character set utf8mb3 default collate utf8mb3_general_ci; -- 데이터 베이스 생성 show databases; use dictionary; -- dictionary 데이터베이스 이용 CREATE TABLE naver_wikipedia( -- 테이블 생성 id BIGINT PRIMARY KEY AUTO_INCREMENT, keyword VARCHAR(500), contents VARCHAR(4000), img_url VARCHAR(500), detail_url VARCHAR(500)) default character set utf8mb3 collate utf8mb3_general_ci; ..

Language/Python 2022.09.26