First plugin, problem with get_pages

Take a look at this to get you started. Then work from here. There were a number of things you had wrong, and I think this will clarify.

<?php
/*
Plugin Name: Child Pages Query
Author: Sten Winroth
Plugin URI: 
Description: 
Version: 1.0
Author URI: 
Domain Path: /languages
Text Domain: 
*/

class childPagesQuery
{
    private $ver="1.0";

    function __construct()
    {
        add_action( 'init', array($this, 'init') );
    }

    public function init()
    {
        add_shortcode( 'child_query', array($this, 'child_query_frontend') );
    }

    public function child_query()
    {
        global $post;

        // Determine parent page ID
        $parent_page_id = ( '0' != $post->post_parent ? $post->post_parent : $post->ID );

        // Get child pages as array
        $args = array(
            'child_of' => $parent_page_id,
            'post_type' => 'page',
            'orderby' => 'menu_order',
            'order' => 'ASC',
            'posts_per_page' => 100,
        );
        $child_query = get_pages($args);
        print_r($child_query);
    }

    public function child_query_frontend( $atts )
    {
        /**/
        $child_query = $this->child_query();
        echo '<pre style="font-size:0.7em;">';
        print_r($child_query);
        echo "</pre>\n";
        /**/
    }
}

new childPagesQuery();

EDIT: To clarify about the $atts variable passed to child_query_frontend().

If you used your shortcode like this:

[child_query]

Nothing will be passed to that variable, it will be empty, but it should still be there, because the shortcode functions will try to pass an empty array to it.

If you use your shortcode like this:

[child_query post_id="5"]

Then $atts would be something like $atts[‘post_id’]. Take a look at the Shortcode API documentation on WordPress.org for more about how attributes work and better examples of how to use them.